芝麻web文件管理V1.00
编辑当前文件:/home/conskgoa/doughi.co.uk/wp-content/plugins/permalink-manager/permalink-manager.php
include_subclasses(); $this->register_init_hooks(); } /** * Include back-end classes and set their instances */ function include_subclasses() { // WP_List_Table needed for post types & taxonomies editors if ( ! class_exists( 'WP_List_Table' ) ) { require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' ); } $classes = array( 'core' => array( 'helper-functions' => 'Permalink_Manager_Helper_Functions', 'uri-functions' => 'Permalink_Manager_URI_Functions', 'uri-functions-post' => 'Permalink_Manager_URI_Functions_Post', 'uri-functions-tax' => 'Permalink_Manager_URI_Functions_Tax', 'admin-functions' => 'Permalink_Manager_Admin_Functions', 'actions' => 'Permalink_Manager_Actions', 'core-functions' => 'Permalink_Manager_Core_Functions', 'permastructures-functions' => 'Permalink_Manager_Permastructure_Functions', 'gutenberg' => 'Permalink_Manager_Gutenberg', 'debug' => 'Permalink_Manager_Debug_Functions', 'pro-license' => 'Permalink_Manager_Pro_License', 'pro-functions' => 'Permalink_Manager_Pro_Functions' ), 'integrations' => array( 'third-parties' => 'Permalink_Manager_Third_Parties', 'woocommerce' => 'Permalink_Manager_WooCommerce', 'seo-plugins' => 'Permalink_Manager_SEO_Plugins', 'language-plugins' => 'Permalink_Manager_Language_Plugins' ), 'views' => array( 'ui-elements' => 'Permalink_Manager_UI_Elements', 'uri-editor' => 'Permalink_Manager_URI_Editor', 'tools' => 'Permalink_Manager_Tools', 'permastructures' => 'Permalink_Manager_Permastructs', 'settings' => 'Permalink_Manager_Settings', 'debug' => 'Permalink_Manager_Debug', 'pro-addons' => 'Permalink_Manager_Pro_Addons', 'help' => 'Permalink_Manager_Help', 'uri-editor-tax' => false, 'uri-editor-post' => false ) ); // Load classes and set-up their instances foreach ( $classes as $class_type => $classes_array ) { foreach ( $classes_array as $class => $class_name ) { $filename = PERMALINK_MANAGER_DIR . "/includes/{$class_type}/permalink-manager-{$class}.php"; if ( file_exists( $filename ) ) { require_once $filename; if ( $class_name ) { $this->functions[ $class ] = new $class_name(); } } } } } /** * Register general hooks */ public function register_init_hooks() { // Localize plugin add_action( 'init', array( $this, 'localize_me' ), 1 ); // Support deprecated hooks add_action( 'plugins_loaded', array( $this, 'deprecated_hooks' ), 9 ); // Deactivate free version if Permalink Manager Pro is activated add_action( 'plugins_loaded', array( $this, 'is_pro_activated' ), 9 ); // Load globals & options add_action( 'plugins_loaded', array( $this, 'get_options_and_globals' ), 9 ); add_action( 'init', array( $this, 'get_output_globals' ), 9 ); // Legacy support add_action( 'init', array( $this, 'legacy_support' ), 2 ); // Default settings & alerts add_filter( 'permalink_manager_options', array( $this, 'default_settings' ), 1 ); add_filter( 'permalink_manager_alerts', array( $this, 'default_alerts' ), 1 ); } /** * Localize this plugin */ function localize_me() { // phpcs:ignore PluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound -- Make sure that the same textdomain is loaded for both Lite and Pro versions load_plugin_textdomain( 'permalink-manager', false, basename( dirname( __FILE__ ) ) . "/languages" ); } /** * Get options values & set global variables */ public function get_options_and_globals() { // 1. Globals with data stored in DB global $permalink_manager_options, $permalink_manager_uris, $permalink_manager_permastructs, $permalink_manager_redirects, $permalink_manager_external_redirects; $permalink_manager_options = (array) apply_filters( 'permalink_manager_options', get_option( 'permalink-manager', array() ) ); $permalink_manager_uris = (array) apply_filters( 'permalink_manager_uris', get_option( 'permalink-manager-uris', array() ) ); $permalink_manager_permastructs = (array) apply_filters( 'permalink_manager_permastructs', get_option( 'permalink-manager-permastructs', array() ) ); $permalink_manager_redirects = (array) apply_filters( 'permalink_manager_redirects', get_option( 'permalink-manager-redirects', array() ) ); $permalink_manager_external_redirects = (array) apply_filters( 'permalink_manager_external_redirects', get_option( 'permalink-manager-external-redirects', array() ) ); } /** * Get global variables */ public function get_output_globals() { // 2. Globals used to display additional content (e.g. alerts) global $permalink_manager_alerts, $permalink_manager_before_sections_html, $permalink_manager_after_sections_html; $permalink_manager_alerts = apply_filters( 'permalink_manager_alerts', array() ); $permalink_manager_before_sections_html = apply_filters( 'permalink_manager_before_sections', '' ); $permalink_manager_after_sections_html = apply_filters( 'permalink_manager_after_sections', '' ); } /** * Set the initial/default settings (including "Screen Options") * * @param array $settings * * @return array */ public function default_settings( $settings ) { $default_settings = apply_filters( 'permalink_manager_default_options', array( 'screen-options' => array( 'per_page' => 20, 'post_statuses' => array( 'publish' ), 'group' => false ), 'general' => array( 'auto_update_uris' => 0, 'show_native_slug_field' => 0, 'pagination_redirect' => 0, 'sslwww_redirect' => 1, 'canonical_redirect' => 1, 'old_slug_redirect' => 0, 'setup_redirects' => 0, 'redirect' => '301', 'extra_redirects' => 1, 'copy_query_redirect' => 1, 'trailing_slashes' => 0, 'trailing_slash_redirect' => 1, 'auto_fix_duplicates' => 0, 'fix_language_mismatch' => 0, 'wpml_support' => 1, 'wpml_translate_mode' => 0, 'pmxi_support' => 1, 'um_support' => 1, 'yoast_breadcrumbs' => 0, 'rankmath_redirect' => 1, 'primary_category' => 1, 'force_custom_slugs' => 0, 'disable_slug_sanitization' => 0, 'keep_accents' => 0, 'partial_disable' => array( 'post_types' => array( 'attachment', 'tribe_events', 'e-landing-page' ) ), 'partial_disable_strict' => 1, 'ignore_drafts' => 1, 'edit_uris_cap' => 'publish_posts', 'force_unique_uris' => 0, 'debug_mode' => 0 ), 'licence' => array() ) ); // Check if settings array is empty $settings_empty = empty( $settings ); // Apply the default settings (if empty values) in all settings sections foreach ( $default_settings as $group_name => $fields ) { foreach ( $fields as $field_name => $field ) { if ( $settings_empty || ( ! isset( $settings[ $group_name ][ $field_name ] ) && strpos( $field_name, 'partial_disable' ) === false ) ) { $settings[ $group_name ][ $field_name ] = $field; } } } return $settings; } /** * Set the initial/default admin notices * * @param array $alerts * * @return array */ public function default_alerts( $alerts ) { $default_alerts = apply_filters( 'permalink_manager_default_alerts', array( 'summer-promo' => array( 'txt' => sprintf( __( "
Extra Discount
: Upgrade to Permalink Manager Pro for custom taxonomy and WooCommerce support, custom fields in permalinks, and priority email support.
Upgrade today and save 40%% with code \"MAY26\"
.", "permalink-manager" ), PERMALINK_MANAGER_WEBSITE ), 'type' => 'notice-info', 'show' => 'pro_hide', 'plugin_only' => false, 'until' => '2026-05-15' ) ) ); // Apply the default settings (if empty values) in all settings sections return (array) $alerts + (array) $default_alerts; } /** * Make sure that the Permalink Manager options stored in DB match the new structure */ function legacy_support() { global $permalink_manager_permastructs, $permalink_manager_options; if ( isset( $permalink_manager_options['base-editor'] ) ) { $new_options['post_types'] = $permalink_manager_options['base-editor']; update_option( 'permalink-manager-permastructs', $new_options ); } else if ( empty( $permalink_manager_permastructs['post_types'] ) && empty( $permalink_manager_permastructs['taxonomies'] ) && count( $permalink_manager_permastructs ) > 0 ) { $new_options['post_types'] = $permalink_manager_permastructs; update_option( 'permalink-manager-permastructs', $new_options ); } // Separate "Trailing slashes" & "Trailing slashes redirect" setting fields if ( ! empty( $permalink_manager_options['general']['trailing_slashes'] ) && $permalink_manager_options['general']['trailing_slashes'] >= 10 ) { $permalink_manager_unfiltered_options = ( ! empty( $permalink_manager_unfiltered_options ) ) ? $permalink_manager_unfiltered_options : $permalink_manager_options; $permalink_manager_unfiltered_options['general']['trailing_slashes_redirect'] = 1; $permalink_manager_unfiltered_options['general']['trailing_slashes'] = ( $permalink_manager_options['general']['trailing_slashes'] == 10 ) ? 1 : 2; } // Save the settings in database if ( ! empty( $permalink_manager_unfiltered_options ) ) { update_option( 'permalink-manager', $permalink_manager_unfiltered_options ); } // Remove obsolete 'permalink-manager-alerts' from wp_options table if ( get_option( 'permalink-manager-alerts' ) ) { delete_option( 'permalink-manager-alerts' ); } } /** * Return the array of deprecated hooks * * @return array */ function deprecated_hooks_list() { return array( 'permalink_manager_default_options' => 'permalink-manager-default-options', 'permalink_manager_options' => 'permalink-manager-options', 'permalink_manager_uris' => 'permalink-manager-uris', 'permalink_manager_redirects' => 'permalink-manager-redirects', 'permalink_manager_external_redirects' => 'permalink-manager-external-redirects', 'permalink_manager_permastructs' => 'permalink-manager-permastructs', 'permalink_manager_alerts' => 'permalink-manager-alerts', 'permalink_manager_before_sections' => 'permalink-manager-before-sections', 'permalink_manager_sections' => 'permalink-manager-sections', 'permalink_manager_after_sections' => 'permalink-manager-after-sections', 'permalink_manager_field_args' => 'permalink-manager-field-args', 'permalink_manager_field_output' => 'permalink-manager-field-output', 'permalink_manager_deep_uri_detect' => 'permalink-manager-deep-uri-detect', 'permalink_manager_detect_uri' => 'permalink-manager-detect-uri', 'permalink_manager_detected_element_id' => 'permalink-manager-detected-initial-id', 'permalink_manager_detected_term_id' => 'permalink-manager-detected-term-id', 'permalink_manager_detected_post_id' => 'permalink-manager-detected-post-id', 'permalink_manager_primary_term' => 'permalink-manager-primary-term', 'permalink_manager_disabled_post_types' => 'permalink-manager-disabled-post-types', 'permalink_manager_disabled_taxonomies' => 'permalink-manager-disabled-taxonomies', 'permalink_manager_endpoints' => 'permalink-manager-endpoints', 'permalink_manager_filter_permalink_base' => 'permalink_manager-filter-permalink-base', 'permalink_manager_force_lowercase_uris' => 'permalink-manager-force-lowercase-uris', 'permalink_manager_uri_editor_extra_info' => 'permalink-manager-uri-editor-extra-info', 'permalink_manager_debug_fields' => 'permalink-manager-debug-fields', 'permalink_manager_permastructs_fields' => 'permalink-manager-permastructs-fields', 'permalink_manager_settings_fields' => 'permalink-manager-settings-fields', 'permalink_manager_tools_fields' => 'permalink-manager-tools-fields', 'permalink_manager_uri_editor_columns' => 'permalink-manager-uri-editor-columns', 'permalink_manager_uri_editor_column_content' => 'permalink-manager-uri-editor-column-content', 'permalink_manager_redirect_shop_archive' => 'permalink-manager-redirect-shop-archive' ); } /** * Map the deprecated hooks to their relevant equivalents. */ function deprecated_hooks() { $deprecated_filters = $this->deprecated_hooks_list(); foreach ( $deprecated_filters as $new => $old ) { add_filter( $new, array( $this, 'deprecated_hooks_mapping' ), - 1000, 8 ); } } /** * Apply the deprecated filters to the relevant hooks * * @param mixed $data * * @return mixed */ function deprecated_hooks_mapping( $data ) { $deprecated_filters = $this->deprecated_hooks_list(); $filter = current_filter(); if ( isset( $deprecated_filters[ $filter ] ) ) { if ( has_filter( $deprecated_filters[ $filter ] ) ) { do_action( 'deprecated_function_run', $deprecated_filters[ $filter ], $filter, '2.4.3' ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Use built-in mechanism for flagging $args = func_get_args(); $data = apply_filters_ref_array( $deprecated_filters[ $filter ], $args ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound } } return $data; } /** * Deactivate Permalink Manager Lite if Permalink Manager Pro is enabled */ function is_pro_activated() { if ( function_exists( 'is_plugin_active' ) && is_plugin_active( 'permalink-manager/permalink-manager.php' ) && is_plugin_active( 'permalink-manager-pro/permalink-manager.php' ) ) { deactivate_plugins( 'permalink-manager/permalink-manager.php' ); } } } /** * Begins execution of the plugin */ function run_permalink_manager() { global $permalink_manager; // Do not run when Elementor is opened // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- No data is processed here if ( ( ! empty( $_REQUEST['action'] ) && is_string( $_REQUEST['action'] ) && strpos( $_REQUEST['action'], 'elementor' ) !== false ) || isset( $_REQUEST['elementor-preview'] ) || isset( $_REQUEST['disable-pm'] ) ) { return; } $permalink_manager = new Permalink_Manager_Class(); } run_permalink_manager(); }