晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/wpseo-local/ |
Upload File : |
<?php
/**
* Yoast SEO: Local
*
* @package WPSEO_Local\Main
*
* @wordpress-plugin
* Plugin Name: Yoast SEO: Local
* Version: 12.1
* Plugin URI: https://yoast.com/wordpress/local-seo/
* Description: This Local SEO module adds all the needed functionality to get your site ready for Local Search Optimization
* Author: Team Yoast and Arjan Snaterse
* Author URI: https://yoast.com
*
* Copyright 2012-2019 Joost de Valk & Arjan Snaterse
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* All functionality for fetching location data and creating an KML file with it.
*/
if ( ! defined( 'WPSEO_LOCAL_VERSION' ) ) {
define( 'WPSEO_LOCAL_VERSION', '12.1' );
}
if ( ! defined( 'WPSEO_LOCAL_PATH' ) ) {
define( 'WPSEO_LOCAL_PATH', plugin_dir_path( __FILE__ ) );
}
if ( ! defined( 'WPSEO_LOCAL_URI' ) ) {
define( 'WPSEO_LOCAL_URI', plugin_dir_url( __FILE__ ) );
}
if ( ! defined( 'WPSEO_LOCAL_FILE' ) ) {
define( 'WPSEO_LOCAL_FILE', __FILE__ );
}
if ( file_exists( WPSEO_LOCAL_PATH . 'vendor/autoload_52.php' ) ) {
require WPSEO_LOCAL_PATH . 'vendor/autoload_52.php';
}
if ( ! function_exists( 'yoast_wpseo_local_deactivate_sibling_plugins' ) ) {
/**
* Deactivate our sibling plugin: "Yoast SEO: Local for WooCommerce", because they may not be active simultaneously
*
* @since 3.3.1
*/
function yoast_wpseo_local_deactivate_sibling_plugins() {
deactivate_plugins( WPSEO_LOCAL_FILE );
}
}
register_activation_hook( __FILE__, 'yoast_wpseo_local_deactivate_sibling_plugins' );
// Actions moved from includes/ajax-functions.php and includes/wpseo-local-functions.php
// so those files can be autoloaded (as they will contain just functions then).
if ( function_exists( 'wpseo_copy_location_callback' ) ) {
add_action( 'wp_ajax_wpseo_copy_location', 'wpseo_copy_location_callback' );
add_action( 'wp_ajax_nopriv_wpseo_copy_location', 'wpseo_copy_location_callback' );
}
if ( function_exists( 'wpseo_enqueue_geocoder' ) ) {
add_action( 'wp_footer', 'wpseo_enqueue_geocoder' );
add_action( 'admin_footer', 'wpseo_enqueue_geocoder' );
}
if ( ! function_exists( 'wpseo_local_seo_init' ) ) {
/**
* Initialize the Local SEO module on plugins loaded, so WP SEO should have set its constants and loaded its main classes.
*
* @since 0.2
*/
function wpseo_local_seo_init() {
global $wpseo_local_core;
// Load text domain.
load_plugin_textdomain( 'yoast-local-seo', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
if ( defined( 'WPSEO_VERSION' ) ) {
// Requires Yoast SEO 11.0 for the new Schema framework to be present.
if ( version_compare( WPSEO_VERSION, '11.0-RC0', '>=' ) ) {
$wpseo_local_core = new WPSEO_Local_Core();
new WPSEO_Local_Admin();
new WPSEO_Local_Metaboxes();
new WPSEO_Local_Frontend();
new WPSEO_Local_Schema();
new WPSEO_Local_Storelocator();
new WPSEO_Local_Taxonomy();
new WPSEO_Local_Sanitize_Options();
new WPSEO_Local_Import_Export_Admin();
new WPSEO_Local_Import();
new WPSEO_Local_Export();
new WPSEO_Local_Api_Keys_Repository();
new WPSEO_Local_Admin_Page();
new WPSEO_Local_Admin_General_Settings();
new WPSEO_Local_Admin_Opening_Hours();
new WPSEO_Local_Admin_Map_Settings();
new WPSEO_Local_Admin_API_Keys();
new WPSEO_Local_Admin_Advanced_Settings();
new WPSEO_Local_Search();
new WPSEO_Local_Admin_Assets();
new WPSEO_Local_Blocks();
}
else {
add_action( 'all_admin_notices', 'yoast_wpseo_local_upgrade_error' );
}
}
else {
add_action( 'all_admin_notices', 'wpseo_local_missing_error' );
}
}
add_action( 'init', 'wpseo_local_seo_init' );
}
if ( ! function_exists( 'yoast_seo_local_init_woocommerce ' ) ) {
/**
* Boots the Local WooCommerce functionality. But first check whether WooCommerce and Yoast: SEO plugins are activated.
*/
function yoast_seo_local_init_woocommerce() {
if ( class_exists( 'WooCommerce' ) && class_exists( 'WPSEO_Utils' ) ) {
new WPSEO_Local_WooCommerce();
}
}
add_action( 'plugins_loaded', 'yoast_seo_local_init_woocommerce', 1 );
}
if ( ! function_exists( 'wpseo_local_init_rest_api' ) ) {
/**
* Loads the rest api endpoints.
*/
function wpseo_local_init_rest_api() {
// We can't do anything when requirements are not met.
if ( false === class_exists( 'WPSEO_Utils' ) || ! WPSEO_Utils::is_api_available() ) {
return;
}
$wpseo_locations_endpoint = new WPSEO_Local_Endpoint_Locations();
$wpseo_locations_endpoint->register();
}
add_action( 'rest_api_init', 'wpseo_local_init_rest_api' );
}
if ( ! function_exists( 'wpseo_local_seo_init_widgets' ) ) {
/**
* Register all widgets used for Local SEO plugin
*
* @since 3.1
*/
function wpseo_local_seo_init_widgets() {
$widgets = array(
'WPSEO_Show_Address',
'WPSEO_Show_Map',
'WPSEO_Show_OpeningHours',
'WPSEO_Show_Open_Closed',
);
if ( wpseo_has_multiple_locations() ) {
$widgets[] = 'WPSEO_Storelocator_Form';
$widgets[] = 'WPSEO_Show_Locations_By_Category';
}
foreach ( $widgets as $widget ) {
register_widget( $widget );
}
}
add_action( 'widgets_init', 'wpseo_local_seo_init_widgets' );
}
if ( ! function_exists( 'wpseo_local_missing_error' ) ) {
/**
* Throw an error if Yoast SEO is not installed.
*
* @since 0.2
*/
function wpseo_local_missing_error() {
echo '<div class="error"><p>';
printf(
/* translators: %1$s resolves to the link to search the plugin directory for Yoast SEO, %2$s resolves to the closing tag for this link, %3$s resolves to Local SEO */
esc_html__( 'Please %1$sinstall & activate Yoast SEO%2$s to allow the %3$s module to work.', 'yoast-local-seo' ),
'<a href="' . esc_url( admin_url( 'plugin-install.php?tab=search&type=term&s=yoast+seo&plugin-search-input=Search+Plugins' ) ) . '">',
'</a>',
'Local SEO'
);
echo '</p></div>';
}
}
if ( ! function_exists( 'yoast_wpseo_local_upgrade_error' ) ) {
/**
* Throw an error if Yoast SEO is out of date.
*
* @since 1.5.4
*/
function yoast_wpseo_local_upgrade_error() {
/* translators: %1$s resolves to Yoast SEO, %2$s resolves to Local SEO */
echo '<div class="error"><p>' . sprintf( __( 'Please upgrade the %1$s plugin to the latest version to allow the %2$s module to work.', 'yoast-local-seo' ), 'Yoast SEO', 'Local SEO' ) . '</p></div>';
}
}
if ( ! function_exists( 'yoast_wpseo_local_activate_license' ) ) {
/**
* Instantiate the plugin license manager for the current plugin and activate it's license.
*
* @deprecated 10.1
* @codeCoverageIgnore
*/
function yoast_wpseo_local_activate_license() {
_deprecated_function( __FUNCTION__, '10.0' );
}
}
/* ***************************** PLUGIN (DE-)ACTIVATION *************************** */
if ( ! function_exists( 'yoast_wpseo_local_activate' ) ) {
/**
* Run single site / network-wide activation of the plugin.
*
* @param bool $networkwide Whether the plugin is being activated network-wide.
*/
function yoast_wpseo_local_activate( $networkwide = false ) {
if ( ! is_multisite() || ! $networkwide ) {
_yoast_wpseo_local_activate();
}
else {
/* Multi-site network activation - activate the plugin for all blogs */
yoast_wpseo_local_network_activate_deactivate( true );
}
}
}
if ( ! function_exists( 'yoast_wpseo_local_deactivate' ) ) {
/**
* Run single site / network-wide de-activation of the plugin.
*
* @param bool $networkwide Whether the plugin is being de-activated network-wide.
*/
function yoast_wpseo_local_deactivate( $networkwide = false ) {
if ( ! is_multisite() || ! $networkwide ) {
_yoast_wpseo_local_deactivate();
}
else {
/* Multi-site network activation - de-activate the plugin for all blogs */
yoast_wpseo_local_network_activate_deactivate( false );
}
// Clean up notifications set bij Local SEO from Yoast Notification Center.
if ( class_exists( 'Yoast_Notification_Center' ) ) {
$notifications = array(
'LocalSEOBrowserKey',
'PersonOrCompanySettingUpdate',
'PersonOrCompanySettingError',
);
$notification_center = Yoast_Notification_Center::get();
foreach ( $notifications as $notification_id ) {
$notification = $notification_center->get_notification_by_id( $notification_id );
if ( $notification instanceof Yoast_Notification ) {
$notification_center->remove_notification( $notification );
}
}
}
}
}
if ( ! function_exists( 'yoast_wpseo_local_network_activate_deactivate' ) ) {
/**
* Run network-wide (de-)activation of the plugin
*
* @param bool $activate True for plugin activation, false for de-activation.
*/
function yoast_wpseo_local_network_activate_deactivate( $activate = true ) {
global $wpdb;
$network_blogs = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE site_id = %d", $wpdb->siteid ) );
if ( is_array( $network_blogs ) && $network_blogs !== array() ) {
foreach ( $network_blogs as $blog_id ) {
switch_to_blog( $blog_id );
if ( $activate === true ) {
_yoast_wpseo_local_activate();
}
else {
_yoast_wpseo_local_deactivate();
}
restore_current_blog();
}
}
}
}
if ( ! function_exists( '_yoast_wpseo_local_activate' ) ) {
/**
* Runs on activation of the plugin.
*/
function _yoast_wpseo_local_activate() {
WPSEO_Local_Core::set_defaults();
WPSEO_Local_Core::update_sitemap();
if ( method_exists( 'WPSEO_Sitemaps_Cache', 'clear' ) ) {
WPSEO_Sitemaps_Cache::clear( array( WPSEO_Sitemaps::SITEMAP_INDEX_TYPE ) );
}
}
}
if ( ! function_exists( '_yoast_wpseo_local_deactivate' ) ) {
/**
* Runs on deactivation of the plugin.
*/
function _yoast_wpseo_local_deactivate() {
WPSEO_Local_Core::update_sitemap();
if ( method_exists( 'WPSEO_Sitemaps_Cache', 'clear' ) ) {
WPSEO_Sitemaps_Cache::clear( array( WPSEO_Sitemaps::SITEMAP_INDEX_TYPE ) );
}
}
}
if ( ! function_exists( 'yoast_wpseo_local_on_activate_blog' ) ) {
/**
* Run yoast wpseo local activation routine on creation / activation of a multisite blog if Yoast WPSEO Local is activated
* network-wide.
*
* Will only be called by multisite actions.
*
* @internal Unfortunately will fail if the plugin is in the must-use directory
* @see https://core.trac.wordpress.org/ticket/24205
*
* @param int $blog_id Blog ID.
*/
function yoast_wpseo_local_on_activate_blog( $blog_id ) {
if ( ! function_exists( 'is_plugin_active_for_network' ) ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( is_plugin_active_for_network( plugin_basename( WPSEO_FILE ) ) ) {
switch_to_blog( $blog_id );
yoast_wpseo_local_activate( false );
restore_current_blog();
}
}
}
// Activation and de-activation hooks.
if ( function_exists( 'yoast_wpseo_local_activate' ) ) {
register_activation_hook( WPSEO_LOCAL_FILE, 'yoast_wpseo_local_activate' );
}
if ( function_exists( 'yoast_wpseo_local_deactivate' ) ) {
register_deactivation_hook( WPSEO_LOCAL_FILE, 'yoast_wpseo_local_deactivate' );
}
if ( function_exists( 'yoast_wpseo_local_on_activate_blog' ) ) {
add_action( 'wpmu_new_blog', 'yoast_wpseo_local_on_activate_blog' );
add_action( 'activate_blog', 'yoast_wpseo_local_on_activate_blog' );
}