Файловый менеджер - Редактировать - /home/kunzqhe/photostocker/2/taxonomy.tar
Ðазад
class-taxonomy-fields.php 0000644 00000011535 15153136522 0011512 0 ustar 00 <?php /** * WPSEO plugin file. * * @package WPSEO\Admin */ /** * Class WPSEO_Taxonomy_Tab. * * Contains the basics for each class extending this one. */ class WPSEO_Taxonomy_Fields { /** * Returns the taxonomy fields. * * @param string $field_group The field group. * * @return array */ public function get( $field_group ) { $fields = []; switch ( $field_group ) { case 'content': $fields = $this->get_content_fields(); break; case 'settings': $fields = $this->get_settings_fields(); break; case 'social': $fields = $this->get_social_fields(); break; } return $this->filter_hidden_fields( $fields ); } /** * Returns array with the fields for the general tab. * * @return array */ protected function get_content_fields() { $fields = [ 'title' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'desc' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'linkdex' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'content_score' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'focuskw' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'is_cornerstone' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ]; /** * Filter: 'wpseo_taxonomy_content_fields' - Adds the possibility to register additional content fields. * * @api array - The additional fields. */ $additional_fields = apply_filters( 'wpseo_taxonomy_content_fields', [] ); return array_merge( $fields, $additional_fields ); } /** * Returns array with the fields for the settings tab. * * @return array */ protected function get_settings_fields() { return [ 'noindex' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'bctitle' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => ( WPSEO_Options::get( 'breadcrumbs-enable' ) !== true ), ], 'canonical' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ]; } /** * Returning the fields for the social media tab. * * @return array */ protected function get_social_fields() { $fields = []; if ( WPSEO_Options::get( 'opengraph', false ) === true ) { $fields = [ 'opengraph-title' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'opengraph-description' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'opengraph-image' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'opengraph-image-id' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ]; } if ( WPSEO_Options::get( 'twitter', false ) === true ) { $fields = array_merge( $fields, [ 'twitter-title' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'twitter-description' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'twitter-image' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'twitter-image-id' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ] ); } return $fields; } /** * Filter the hidden fields. * * @param array $fields Array with the form fields that has will be filtered. * * @return array */ protected function filter_hidden_fields( array $fields ) { foreach ( $fields as $field_name => $field_options ) { if ( ! empty( $field_options['hide'] ) ) { unset( $fields[ $field_name ] ); } } return $fields; } } class-taxonomy-fields-presenter.php 0000644 00000016027 15153136522 0013520 0 ustar 00 <?php /** * WPSEO plugin file. * * @package WPSEO\Admin */ /** * Class WPSEO_Taxonomy_Presenter. */ class WPSEO_Taxonomy_Fields_Presenter { /** * The taxonomy meta data for the current term. * * @var array */ private $tax_meta; /** * Constructs the WPSEO_Taxonomy_Fields_Presenter class. * * @param stdClass $term The current term. */ public function __construct( $term ) { $this->tax_meta = WPSEO_Taxonomy_Meta::get_term_meta( (int) $term->term_id, $term->taxonomy ); } /** * Displaying the form fields. * * @param array $fields Array with the fields that will be displayed. * * @return string */ public function html( array $fields ) { $content = ''; foreach ( $fields as $field_name => $field_configuration ) { $content .= $this->form_row( 'wpseo_' . $field_name, $field_configuration ); } return $content; } /** * Create a row in the form table. * * @param string $field_name Variable the row controls. * @param array $field_configuration Array with the field configuration. * * @return string */ private function form_row( $field_name, array $field_configuration ) { $esc_field_name = esc_attr( $field_name ); $options = (array) $field_configuration['options']; if ( ! empty( $field_configuration['description'] ) ) { $options['description'] = $field_configuration['description']; } $label = $this->get_label( $field_configuration['label'], $esc_field_name ); $field = $this->get_field( $field_configuration['type'], $esc_field_name, $this->get_field_value( $field_name ), $options ); $help_content = isset( $field_configuration['options']['help'] ) ? $field_configuration['options']['help'] : ''; $help_button_text = isset( $field_configuration['options']['help-button'] ) ? $field_configuration['options']['help-button'] : ''; $help = new WPSEO_Admin_Help_Panel( $field_name, $help_button_text, $help_content ); return $this->parse_row( $label, $help, $field ); } /** * Generates the html for the given field config. * * @param string $field_type The fieldtype, e.g: text, checkbox, etc. * @param string $field_name The name of the field. * @param string $field_value The value of the field. * @param array $options Array with additional options. * * @return string */ private function get_field( $field_type, $field_name, $field_value, array $options ) { $class = $this->get_class( $options ); $field = ''; $description = ''; $aria_describedby = ''; if ( ! empty( $options['description'] ) ) { $aria_describedby = ' aria-describedby="' . $field_name . '-desc"'; $description = '<p id="' . $field_name . '-desc" class="yoast-metabox__description">' . $options['description'] . '</p>'; } switch ( $field_type ) { case 'div': $field .= '<div id="' . $field_name . '"></div>'; break; case 'url': $field .= '<input name="' . $field_name . '" id="' . $field_name . '" ' . $class . ' type="url" value="' . esc_attr( urldecode( $field_value ) ) . '" size="40"' . $aria_describedby . '/>'; break; case 'text': $field .= '<input name="' . $field_name . '" id="' . $field_name . '" ' . $class . ' type="text" value="' . esc_attr( $field_value ) . '" size="40"' . $aria_describedby . '/>'; break; case 'checkbox': $field .= '<input name="' . $field_name . '" id="' . $field_name . '" type="checkbox" ' . checked( $field_value ) . $aria_describedby . '/>'; break; case 'textarea': $rows = 3; if ( ! empty( $options['rows'] ) ) { $rows = $options['rows']; } $field .= '<textarea class="large-text" rows="' . esc_attr( $rows ) . '" id="' . $field_name . '" name="' . $field_name . '"' . $aria_describedby . '>' . esc_textarea( $field_value ) . '</textarea>'; break; case 'upload': $field .= '<input' . ' id="' . $field_name . '"' . ' type="text"' . ' size="36"' . ' name="' . $field_name . '"' . ' value="' . esc_attr( $field_value ) . '"' . $aria_describedby . '' . ' readonly="readonly"' . ' /> '; $field .= '<input' . ' id="' . esc_attr( $field_name ) . '_button"' . ' class="wpseo_image_upload_button button"' . ' data-target="' . esc_attr( $field_name ) . '"' . ' data-target-id="hidden_' . esc_attr( $field_name ) . '-id"' . ' type="button"' . ' value="' . esc_attr__( 'Upload Image', 'wordpress-seo' ) . '"' . ' /> '; $field .= '<input' . ' id="' . esc_attr( $field_name ) . '_button"' . ' class="wpseo_image_remove_button button"' . ' type="button"' . ' value="' . esc_attr__( 'Clear Image', 'wordpress-seo' ) . '"' . ' />'; break; case 'select': if ( is_array( $options ) && $options !== [] ) { $field .= '<select name="' . $field_name . '" id="' . $field_name . '"' . $aria_describedby . '>'; $select_options = ( array_key_exists( 'options', $options ) ) ? $options['options'] : $options; foreach ( $select_options as $option => $option_label ) { $selected = selected( $option, $field_value, false ); $field .= '<option ' . $selected . ' value="' . esc_attr( $option ) . '">' . esc_html( $option_label ) . '</option>'; } unset( $option, $option_label, $selected ); $field .= '</select>'; } break; case 'hidden': $field .= '<input name="' . $field_name . '" id="hidden_' . $field_name . '" type="hidden" value="' . esc_attr( $field_value ) . '" />'; break; } return $field . $description; } /** * Getting the value for given field_name. * * @param string $field_name The fieldname to get the value for. * * @return string */ private function get_field_value( $field_name ) { if ( isset( $this->tax_meta[ $field_name ] ) && $this->tax_meta[ $field_name ] !== '' ) { return $this->tax_meta[ $field_name ]; } return ''; } /** * Getting the class attributes if $options contains a class key. * * @param array $options The array with field options. * * @return string */ private function get_class( array $options ) { if ( ! empty( $options['class'] ) ) { return ' class="' . esc_attr( $options['class'] ) . '"'; } return ''; } /** * Getting the label HTML. * * @param string $label The label value. * @param string $field_name The target field. * * @return string */ private function get_label( $label, $field_name ) { if ( $label !== '' ) { return '<label for="' . $field_name . '">' . esc_html( $label ) . '</label>'; } return ''; } /** * Returns the HTML for the row which contains label, help and the field. * * @param string $label The html for the label if there was a label set. * @param WPSEO_Admin_Help_Panel $help The help panel to render in this row. * @param string $field The html for the field. * * @return string */ private function parse_row( $label, WPSEO_Admin_Help_Panel $help, $field ) { if ( $label !== '' || $help !== '' ) { return $label . $help->get_button_html() . $help->get_panel_html() . $field; } return $field; } } class-taxonomy-columns.php 0000644 00000016234 15153136522 0011725 0 ustar 00 <?php /** * WPSEO plugin file. * * @package WPSEO\Admin */ /** * This class adds columns to the taxonomy table. */ class WPSEO_Taxonomy_Columns { /** * The SEO analysis. * * @var WPSEO_Metabox_Analysis_SEO */ private $analysis_seo; /** * The readability analysis. * * @var WPSEO_Metabox_Analysis_Readability */ private $analysis_readability; /** * The current taxonomy. * * @var string */ private $taxonomy; /** * WPSEO_Taxonomy_Columns constructor. */ public function __construct() { $this->taxonomy = $this->get_taxonomy(); if ( ! empty( $this->taxonomy ) ) { add_filter( 'manage_edit-' . $this->taxonomy . '_columns', [ $this, 'add_columns' ] ); add_filter( 'manage_' . $this->taxonomy . '_custom_column', [ $this, 'parse_column' ], 10, 3 ); } $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); } /** * Adds an SEO score column to the terms table, right after the description column. * * @param array $columns Current set columns. * * @return array */ public function add_columns( array $columns ) { if ( $this->display_metabox( $this->taxonomy ) === false ) { return $columns; } $new_columns = []; foreach ( $columns as $column_name => $column_value ) { $new_columns[ $column_name ] = $column_value; if ( $column_name === 'description' && $this->analysis_seo->is_enabled() ) { $new_columns['wpseo-score'] = '<span class="yoast-tooltip yoast-tooltip-n yoast-tooltip-alt" data-label="' . esc_attr__( 'SEO score', 'wordpress-seo' ) . '"><span class="yoast-column-seo-score yoast-column-header-has-tooltip"><span class="screen-reader-text">' . __( 'SEO score', 'wordpress-seo' ) . '</span></span></span>'; } if ( $column_name === 'description' && $this->analysis_readability->is_enabled() ) { $new_columns['wpseo-score-readability'] = '<span class="yoast-tooltip yoast-tooltip-n yoast-tooltip-alt" data-label="' . esc_attr__( 'Readability score', 'wordpress-seo' ) . '"><span class="yoast-column-readability yoast-column-header-has-tooltip"><span class="screen-reader-text">' . __( 'Readability score', 'wordpress-seo' ) . '</span></span></span>'; } } return $new_columns; } /** * Parses the column. * * @param string $content The current content of the column. * @param string $column_name The name of the column. * @param int $term_id ID of requested taxonomy. * * @return string */ public function parse_column( $content, $column_name, $term_id ) { switch ( $column_name ) { case 'wpseo-score': return $this->get_score_value( $term_id ); case 'wpseo-score-readability': return $this->get_score_readability_value( $term_id ); } return $content; } /** * Retrieves the taxonomy from the $_GET variable. * * @return string The current taxonomy. */ public function get_current_taxonomy() { return filter_input( $this->get_taxonomy_input_type(), 'taxonomy' ); } /** * Returns the posted/get taxonomy value if it is set. * * @return string|null */ private function get_taxonomy() { if ( wp_doing_ajax() ) { return FILTER_INPUT( INPUT_POST, 'taxonomy' ); } return FILTER_INPUT( INPUT_GET, 'taxonomy' ); } /** * Parses the value for the score column. * * @param int $term_id ID of requested term. * * @return string */ private function get_score_value( $term_id ) { $term = get_term( $term_id, $this->taxonomy ); // When the term isn't indexable. if ( ! $this->is_indexable( $term ) ) { return $this->create_score_icon( new WPSEO_Rank( WPSEO_Rank::NO_INDEX ), __( 'Term is set to noindex.', 'wordpress-seo' ) ); } // When there is a focus key word. $focus_keyword = $this->get_focus_keyword( $term ); $score = (int) WPSEO_Taxonomy_Meta::get_term_meta( $term_id, $this->taxonomy, 'linkdex' ); $rank = WPSEO_Rank::from_numeric_score( $score ); return $this->create_score_icon( $rank, $rank->get_label() ); } /** * Parses the value for the readability score column. * * @param int $term_id ID of the requested term. * * @return string The HTML for the readability score indicator. */ private function get_score_readability_value( $term_id ) { $score = (int) WPSEO_Taxonomy_Meta::get_term_meta( $term_id, $this->taxonomy, 'content_score' ); $rank = WPSEO_Rank::from_numeric_score( $score ); return $this->create_score_icon( $rank ); } /** * Creates an icon by the given values. * * @param WPSEO_Rank $rank The ranking object. * @param string $title Optional. The title to show. Defaults to the rank label. * * @return string The HTML for a score icon. */ private function create_score_icon( WPSEO_Rank $rank, $title = '' ) { if ( empty( $title ) ) { $title = $rank->get_label(); } return '<div aria-hidden="true" title="' . esc_attr( $title ) . '" class="wpseo-score-icon ' . esc_attr( $rank->get_css_class() ) . '"></div><span class="screen-reader-text wpseo-score-text">' . $title . '</span>'; } /** * Check if the taxonomy is indexable. * * @param mixed $term The current term. * * @return bool Whether or not the term is indexable. */ private function is_indexable( $term ) { // When the no_index value is not empty and not default, check if its value is index. $no_index = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $this->taxonomy, 'noindex' ); // Check if the default for taxonomy is empty (this will be index). if ( ! empty( $no_index ) && $no_index !== 'default' ) { return ( $no_index === 'index' ); } if ( is_object( $term ) ) { $no_index_key = 'noindex-tax-' . $term->taxonomy; // If the option is false, this means we want to index it. return WPSEO_Options::get( $no_index_key, false ) === false; } return true; } /** * Returns the focus keyword if this is set, otherwise it will give the term name. * * @param stdClass|WP_Term $term The current term. * * @return string */ private function get_focus_keyword( $term ) { $focus_keyword = WPSEO_Taxonomy_Meta::get_term_meta( 'focuskw', $term->term_id, $term->taxonomy ); if ( $focus_keyword !== false ) { return $focus_keyword; } return $term->name; } /** * Checks if a taxonomy is being added via a POST method. If not, it defaults to a GET request. * * @return int */ private function get_taxonomy_input_type() { if ( ! empty( $_SERVER['REQUEST_METHOD'] ) && $_SERVER['REQUEST_METHOD'] === 'POST' ) { return INPUT_POST; } return INPUT_GET; } /** * Wraps the WPSEO_Metabox check to determine whether the metabox should be displayed either by * choice of the admin or because the taxonomy is not public. * * @since 7.0 * * @param string|null $taxonomy Optional. The taxonomy to test, defaults to the current taxonomy. * * @return bool Whether or not the meta box (and associated columns etc) should be hidden. */ private function display_metabox( $taxonomy = null ) { $current_taxonomy = sanitize_text_field( $this->get_current_taxonomy() ); if ( ! isset( $taxonomy ) && ! empty( $current_taxonomy ) ) { $taxonomy = $current_taxonomy; } return WPSEO_Utils::is_metabox_active( $taxonomy, 'taxonomy' ); } } class-taxonomy.php 0000644 00000030262 15153136522 0010244 0 ustar 00 <?php /** * WPSEO plugin file. * * @package WPSEO\Admin */ use Yoast\WP\SEO\Presenters\Admin\Alert_Presenter; /** * Class that handles the edit boxes on taxonomy edit pages. */ class WPSEO_Taxonomy { /** * The current active taxonomy. * * @var string */ private $taxonomy = ''; /** * Holds the metabox SEO analysis instance. * * @var WPSEO_Metabox_Analysis_SEO */ private $analysis_seo; /** * Holds the metabox readability analysis instance. * * @var WPSEO_Metabox_Analysis_Readability */ private $analysis_readability; /** * Class constructor. */ public function __construct() { $this->taxonomy = $this->get_taxonomy(); add_action( 'edit_term', [ $this, 'update_term' ], 99, 3 ); add_action( 'init', [ $this, 'custom_category_descriptions_allow_html' ] ); add_action( 'admin_init', [ $this, 'admin_init' ] ); if ( self::is_term_overview( $GLOBALS['pagenow'] ) ) { new WPSEO_Taxonomy_Columns(); } $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); } /** * Add hooks late enough for taxonomy object to be available for checks. */ public function admin_init() { $taxonomy = get_taxonomy( $this->taxonomy ); if ( empty( $taxonomy ) || empty( $taxonomy->public ) || ! $this->show_metabox() ) { return; } $this->insert_description_field_editor(); add_action( sanitize_text_field( $this->taxonomy ) . '_edit_form', [ $this, 'term_metabox' ], 90, 1 ); add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] ); } /** * Show the SEO inputs for term. * * @param stdClass|WP_Term $term Term to show the edit boxes for. */ public function term_metabox( $term ) { if ( WPSEO_Metabox::is_internet_explorer() ) { $this->show_internet_explorer_notice(); return; } $metabox = new WPSEO_Taxonomy_Metabox( $this->taxonomy, $term ); $metabox->display(); } /** * Renders the content for the internet explorer metabox. * * @return void */ private function show_internet_explorer_notice() { $product_title = YoastSEO()->helpers->product->get_product_name(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $product_title is hardcoded. printf( '<div id="wpseo_meta" class="postbox yoast wpseo-taxonomy-metabox-postbox"><h2><span>%1$s</span></h2>', $product_title ); echo '<div class="inside">'; $content = sprintf( /* translators: 1: Link start tag to the Firefox website, 2: Link start tag to the Chrome website, 3: Link start tag to the Edge website, 4: Link closing tag. */ esc_html__( 'The browser you are currently using is unfortunately rather dated. Since we strive to give you the best experience possible, we no longer support this browser. Instead, please use %1$sFirefox%4$s, %2$sChrome%4$s or %3$sMicrosoft Edge%4$s.', 'wordpress-seo' ), '<a href="https://www.mozilla.org/firefox/new/">', '<a href="https://www.google.com/chrome/">', '<a href="https://www.microsoft.com/windows/microsoft-edge">', '</a>' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Output escaped above. echo new Alert_Presenter( $content ); echo '</div></div>'; } /** * Queue assets for taxonomy screens. * * @since 1.5.0 */ public function admin_enqueue_scripts() { $pagenow = $GLOBALS['pagenow']; if ( ! ( self::is_term_edit( $pagenow ) || self::is_term_overview( $pagenow ) ) ) { return; } $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_style( 'scoring' ); $asset_manager->enqueue_style( 'monorepo' ); $tag_id = filter_input( INPUT_GET, 'tag_ID' ); if ( self::is_term_edit( $pagenow ) && ! empty( $tag_id ) // After we drop support for <4.5 this can be removed. ) { wp_enqueue_media(); // Enqueue files needed for upload functionality. $asset_manager->enqueue_style( 'metabox-css' ); $asset_manager->enqueue_style( 'scoring' ); $asset_manager->enqueue_script( 'term-edit' ); $yoast_components_l10n = new WPSEO_Admin_Asset_Yoast_Components_L10n(); $yoast_components_l10n->localize_script( 'term-edit' ); /** * Remove the emoji script as it is incompatible with both React and any * contenteditable fields. */ remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); $asset_manager->localize_script( 'term-edit', 'wpseoAdminL10n', WPSEO_Utils::get_admin_l10n() ); $script_data = [ 'analysis' => [ 'plugins' => [ 'replaceVars' => [ 'no_parent_text' => __( '(no parent)', 'wordpress-seo' ), 'replace_vars' => $this->get_replace_vars(), 'recommended_replace_vars' => $this->get_recommended_replace_vars(), 'scope' => $this->determine_scope(), ], ], 'worker' => [ 'url' => YoastSEO()->helpers->asset->get_asset_url( 'yoast-seo-analysis-worker' ), 'dependencies' => YoastSEO()->helpers->asset->get_dependency_urls_by_handle( 'yoast-seo-analysis-worker' ), 'keywords_assessment_url' => YoastSEO()->helpers->asset->get_asset_url( 'yoast-seo-used-keywords-assessment' ), 'log_level' => WPSEO_Utils::get_analysis_worker_log_level(), ], ], 'media' => [ // @todo replace this translation with JavaScript translations. 'choose_image' => __( 'Use Image', 'wordpress-seo' ), ], 'metabox' => $this->localize_term_scraper_script(), 'userLanguageCode' => WPSEO_Language_Utils::get_language( \get_user_locale() ), 'isTerm' => true, ]; $asset_manager->localize_script( 'term-edit', 'wpseoScriptData', $script_data ); $asset_manager->enqueue_user_language_script(); } if ( self::is_term_overview( $pagenow ) ) { $asset_manager->enqueue_script( 'edit-page' ); } } /** * Update the taxonomy meta data on save. * * @param int $term_id ID of the term to save data for. * @param int $tt_id The taxonomy_term_id for the term. * @param string $taxonomy The taxonomy the term belongs to. */ public function update_term( $term_id, $tt_id, $taxonomy ) { // Bail if this is a multisite installation and the site has been switched. if ( is_multisite() && ms_is_switched() ) { return; } /* Create post array with only our values. */ $new_meta_data = []; foreach ( WPSEO_Taxonomy_Meta::$defaults_per_term as $key => $default ) { $posted_value = filter_input( INPUT_POST, $key ); if ( isset( $posted_value ) && $posted_value !== false ) { $new_meta_data[ $key ] = $posted_value; } // If analysis is disabled remove that analysis score value from the DB. if ( $this->is_meta_value_disabled( $key ) ) { $new_meta_data[ $key ] = ''; } } unset( $key, $default ); // Saving the values. WPSEO_Taxonomy_Meta::set_values( $term_id, $taxonomy, $new_meta_data ); } /** * Determines if the given meta value key is disabled. * * @param string $key The key of the meta value. * @return bool Whether the given meta value key is disabled. */ public function is_meta_value_disabled( $key ) { if ( $key === 'wpseo_linkdex' && ! $this->analysis_seo->is_enabled() ) { return true; } if ( $key === 'wpseo_content_score' && ! $this->analysis_readability->is_enabled() ) { return true; } return false; } /** * Allows post-kses-filtered HTML in term descriptions. */ public function custom_category_descriptions_allow_html() { remove_filter( 'term_description', 'wp_kses_data' ); remove_filter( 'pre_term_description', 'wp_filter_kses' ); add_filter( 'term_description', 'wp_kses_post' ); add_filter( 'pre_term_description', 'wp_filter_post_kses' ); } /** * Output the WordPress editor. */ public function custom_category_description_editor() { wp_editor( '', 'description' ); } /** * Pass variables to js for use with the term-scraper. * * @return array */ public function localize_term_scraper_script() { $term_id = filter_input( INPUT_GET, 'tag_ID' ); $term = get_term_by( 'id', $term_id, $this->get_taxonomy() ); $taxonomy = get_taxonomy( $term->taxonomy ); $term_formatter = new WPSEO_Metabox_Formatter( new WPSEO_Term_Metabox_Formatter( $taxonomy, $term ) ); return $term_formatter->get_values(); } /** * Pass some variables to js for replacing variables. * * @return array */ public function localize_replace_vars_script() { return [ 'no_parent_text' => __( '(no parent)', 'wordpress-seo' ), 'replace_vars' => $this->get_replace_vars(), 'recommended_replace_vars' => $this->get_recommended_replace_vars(), 'scope' => $this->determine_scope(), ]; } /** * Determines the scope based on the current taxonomy. * This can be used by the replacevar plugin to determine if a replacement needs to be executed. * * @return string String decribing the current scope. */ private function determine_scope() { $taxonomy = $this->get_taxonomy(); if ( $taxonomy === 'category' ) { return 'category'; } if ( $taxonomy === 'post_tag' ) { return 'tag'; } return 'term'; } /** * Determines if a given page is the term overview page. * * @param string $page The string to check for the term overview page. * * @return bool */ public static function is_term_overview( $page ) { return $page === 'edit-tags.php'; } /** * Determines if a given page is the term edit page. * * @param string $page The string to check for the term edit page. * * @return bool */ public static function is_term_edit( $page ) { return $page === 'term.php'; } /** * Function to get the labels for the current taxonomy. * * @return object Labels for the current taxonomy. */ public static function get_labels() { $term = filter_input( INPUT_GET, 'taxonomy', FILTER_DEFAULT, [ 'options' => [ 'default' => '' ] ] ); $taxonomy = get_taxonomy( $term ); return $taxonomy->labels; } /** * Retrieves a template. * Check if metabox for current taxonomy should be displayed. * * @return bool */ private function show_metabox() { $option_key = 'display-metabox-tax-' . $this->taxonomy; return WPSEO_Options::get( $option_key ); } /** * Getting the taxonomy from the URL. * * @return string */ private function get_taxonomy() { return filter_input( INPUT_GET, 'taxonomy', FILTER_DEFAULT, [ 'options' => [ 'default' => '' ] ] ); } /** * Prepares the replace vars for localization. * * @return array The replacement variables. */ private function get_replace_vars() { $term_id = filter_input( INPUT_GET, 'tag_ID' ); $term = get_term_by( 'id', $term_id, $this->get_taxonomy() ); $cached_replacement_vars = []; $vars_to_cache = [ 'date', 'id', 'sitename', 'sitedesc', 'sep', 'page', 'term_title', 'term_description', 'term_hierarchy', 'category_description', 'tag_description', 'searchphrase', 'currentyear', ]; foreach ( $vars_to_cache as $var ) { $cached_replacement_vars[ $var ] = wpseo_replace_vars( '%%' . $var . '%%', $term ); } return $cached_replacement_vars; } /** * Prepares the recommended replace vars for localization. * * @return array The recommended replacement variables. */ private function get_recommended_replace_vars() { $recommended_replace_vars = new WPSEO_Admin_Recommended_Replace_Vars(); $taxonomy = filter_input( INPUT_GET, 'taxonomy' ); // What is recommended depends on the current context. $page_type = $recommended_replace_vars->determine_for_term( $taxonomy ); return $recommended_replace_vars->get_recommended_replacevars_for( $page_type ); } /** * Adds custom category description editor. * Needs a hook that runs before the description field. Prior to WP version 4.5 we need to use edit_form as * term_edit_form_top was introduced in WP 4.5. This can be removed after <4.5 is no longer supported. * * @return void */ private function insert_description_field_editor() { if ( version_compare( $GLOBALS['wp_version'], '4.5', '<' ) ) { add_action( "{$this->taxonomy}_edit_form", [ $this, 'custom_category_description_editor' ] ); return; } add_action( "{$this->taxonomy}_term_edit_form_top", [ $this, 'custom_category_description_editor' ] ); } } class-taxonomy-metabox.php 0000644 00000007761 15153136522 0011711 0 ustar 00 <?php /** * WPSEO plugin file. * * @package WPSEO\Admin */ /** * This class generates the metabox on the edit term page. */ class WPSEO_Taxonomy_Metabox { /** * The term currently being edited. * * @var WP_Term */ private $term; /** * The term's taxonomy. * * @var string */ private $taxonomy; /** * Whether or not the social tab is enabled for this metabox. * * @var bool */ private $is_social_enabled; /** * Helper to determine whether or not the SEO analysis is enabled. * * @var WPSEO_Metabox_Analysis_SEO */ protected $seo_analysis; /** * Helper to determine whether or not the readability analysis is enabled. * * @var WPSEO_Metabox_Analysis_Readability */ protected $readability_analysis; /** * The constructor. * * @param string $taxonomy The taxonomy. * @param stdClass $term The term. */ public function __construct( $taxonomy, $term ) { $this->term = $term; $this->taxonomy = $taxonomy; $this->is_social_enabled = WPSEO_Options::get( 'opengraph', false ) || WPSEO_Options::get( 'twitter', false ); $this->seo_analysis = new WPSEO_Metabox_Analysis_SEO(); $this->readability_analysis = new WPSEO_Metabox_Analysis_Readability(); } /** * Shows the Yoast SEO metabox for the term. */ public function display() { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $this->get_product_title() returns a hard-coded string. printf( '<div id="wpseo_meta" class="postbox yoast wpseo-taxonomy-metabox-postbox"><h2><span>%1$s</span></h2>', $this->get_product_title() ); echo '<div class="inside">'; echo '<div id="taxonomy_overall"></div>'; $this->render_hidden_fields(); $this->render_tabs(); echo '</div>'; echo '</div>'; } /** * Renders the metabox hidden fields. * * @return void */ protected function render_hidden_fields() { $fields_presenter = new WPSEO_Taxonomy_Fields_Presenter( $this->term ); $field_definitions = new WPSEO_Taxonomy_Fields(); echo $fields_presenter->html( $field_definitions->get( 'content' ) ); if ( WPSEO_Capability_Utils::current_user_can( 'wpseo_edit_advanced_metadata' ) || WPSEO_Options::get( 'disableadvanced_meta' ) === false ) { echo $fields_presenter->html( $field_definitions->get( 'settings' ) ); } if ( $this->is_social_enabled ) { echo $fields_presenter->html( $field_definitions->get( 'social' ) ); } } /** * Renders the metabox tabs. * * @return void */ protected function render_tabs() { echo '<div class="wpseo-metabox-content">'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $this->get_product_title() returns a hard-coded string. printf( '<div class="wpseo-metabox-menu"><ul role="tablist" class="yoast-aria-tabs" aria-label="%s">', $this->get_product_title() ); $tabs = $this->get_tabs(); foreach ( $tabs as $tab ) { $tab->display_link(); } echo '</ul></div>'; foreach ( $tabs as $tab ) { $tab->display_content(); } echo '</div>'; } /** * Returns the relevant metabox sections for the current view. * * @return WPSEO_Metabox_Section[] */ private function get_tabs() { $tabs = []; $label = __( 'SEO', 'wordpress-seo' ); if ( $this->seo_analysis->is_enabled() ) { $label = '<span class="wpseo-score-icon-container" id="wpseo-seo-score-icon"></span>' . $label; } $tabs[] = new WPSEO_Metabox_Section_React( 'content', $label ); if ( $this->readability_analysis->is_enabled() ) { $tabs[] = new WPSEO_Metabox_Section_Readability(); } if ( $this->is_social_enabled ) { $tabs[] = new WPSEO_Metabox_Section_React( 'social', '<span class="dashicons dashicons-share"></span>' . __( 'Social', 'wordpress-seo' ), '', [ 'html_after' => '<div id="wpseo-section-social"></div>', ] ); } return $tabs; } /** * Retrieves the product title. * * @return string The product title. */ protected function get_product_title() { return YoastSEO()->helpers->product->get_product_name(); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка