class-taxonomy-settings-fields.php
4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
/**
* @package WPSEO\Admin
*/
/**
* This class parses all the values for the general tab in the Yoast SEO settings metabox
*/
class WPSEO_Taxonomy_Settings_Fields extends WPSEO_Taxonomy_Fields {
/**
* @var array Options array for the no-index options, including translated labels
*/
private $no_index_options = array();
/**
* @var array Options array for the sitemap_include options, including translated labels
*/
private $sitemap_include_options = array();
/**
* @param stdClass $term The currenct taxonomy.
*/
public function __construct( $term ) {
parent::__construct( $term );
$this->translate_meta_options();
}
/**
* Returns array with the fields for the general tab
*
* @return array
*/
public function get() {
$fields = array(
'metakey' => $this->get_field_config(
__( 'Meta keywords', 'wordpress-seo' ),
esc_html__( 'Meta keywords used on the archive page for this term.', 'wordpress-seo' ),
'text',
'',
$this->options['usemetakeywords'] !== true
),
'noindex' => $this->get_field_config(
esc_html__( 'Meta robots index', 'wordpress-seo' ),
esc_html__( 'This taxonomy follows the indexation rules set under Metas and Titles, you can override it here.', 'wordpress-seo' ),
'select',
$this->get_noindex_options()
),
'sitemap_include' => $this->get_field_config(
esc_html__( 'Include in Sitemap?', 'wordpress-seo' ),
'',
'select',
$this->sitemap_include_options
),
'bctitle' => $this->get_field_config(
__( 'Breadcrumbs Title', 'wordpress-seo' ),
esc_html__( 'The Breadcrumbs Title is used in the breadcrumbs where this taxonomy appears.', 'wordpress-seo' ),
'text',
'',
$this->options['breadcrumbs-enable'] !== true
),
'canonical' => $this->get_field_config(
__( 'Canonical URL', 'wordpress-seo' ),
esc_html__( 'The canonical link is shown on the archive page for this term.', 'wordpress-seo' )
),
);
return $this->filter_hidden_fields( $fields );
}
/**
* Translate options text strings for use in the select fields
*
* @internal IMPORTANT: if you want to add a new string (option) somewhere, make sure you add
* that array key to the main options definition array in the class WPSEO_Taxonomy_Meta() as well!!!!
*/
private function translate_meta_options() {
$this->no_index_options = WPSEO_Taxonomy_Meta::$no_index_options;
$this->sitemap_include_options = WPSEO_Taxonomy_Meta::$sitemap_include_options;
/* translators: %s expands to the current taxonomy index value */
$this->no_index_options['default'] = __( 'Default for this taxonomy type, currently: %s', 'wordpress-seo' );
$this->no_index_options['index'] = __( 'Index', 'wordpress-seo' );
$this->no_index_options['noindex'] = __( 'Noindex', 'wordpress-seo' );
$this->sitemap_include_options['-'] = __( 'Auto detect', 'wordpress-seo' );
$this->sitemap_include_options['always'] = __( 'Always include', 'wordpress-seo' );
$this->sitemap_include_options['never'] = __( 'Never include', 'wordpress-seo' );
}
/**
* Getting the data for the noindex fields
*
* @return array
*/
private function get_noindex_options() {
$noindex_options['options'] = $this->no_index_options;
$noindex_options['options']['default'] = sprintf( $noindex_options['options']['default'], $this->get_robot_index() );
if ( get_option( 'blog_public' ) === '0' ) {
$noindex_options['description'] = '<br /><span class="error-message">' . esc_html__( 'Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won\'t have an effect.', 'wordpress-seo' ) . '</span>';
}
return $noindex_options;
}
/**
* Returns the current robot index value for the taxonomy
*
* @return string
*/
private function get_robot_index() {
$robot_index = 'index';
$index_option = 'noindex-tax-' . $this->term->taxonomy;
if ( isset( $this->options[ $index_option ] ) && $this->options[ $index_option ] === true ) {
$robot_index = 'noindex';
}
return $robot_index;
}
}