Yoast SEO - Version 11.8

Version Description

Download this release

Release Info

Developer Yoast
Plugin Icon 128x128 Yoast SEO
Version 11.8
Comparing to
See all releases

Code changes from version 11.7 to 11.8

Files changed (173) hide show
  1. admin/class-admin-gutenberg-compatibility-notification.php +4 -0
  2. admin/class-admin-init.php +1 -1
  3. admin/class-asset.php +16 -0
  4. admin/class-customizer.php +9 -7
  5. admin/class-gutenberg-compatibility.php +2 -2
  6. admin/class-meta-table-accessible.php +4 -0
  7. admin/class-my-yoast-route.php +2 -0
  8. admin/class-paper-presenter.php +22 -9
  9. admin/class-social-admin.php +26 -17
  10. admin/class-yoast-dashboard-widget.php +2 -0
  11. admin/config-ui/class-configuration-page.php +1 -1
  12. admin/config-ui/components/class-component-mailchimp-signup.php +2 -0
  13. admin/config-ui/components/interface-component.php +2 -0
  14. admin/endpoints/class-endpoint-file-size.php +6 -0
  15. admin/endpoints/class-endpoint-indexable.php +8 -0
  16. admin/endpoints/class-endpoint-ryte.php +6 -0
  17. admin/endpoints/class-endpoint-statistics.php +6 -0
  18. admin/filters/class-abstract-post-filter.php +2 -0
  19. admin/formatter/class-post-metabox-formatter.php +2 -0
  20. admin/formatter/class-term-metabox-formatter.php +4 -0
  21. admin/google_search_console/class-gsc-config.php +2 -0
  22. admin/google_search_console/class-gsc-count.php +2 -0
  23. admin/google_search_console/class-gsc-issue.php +8 -0
  24. admin/google_search_console/class-gsc-issues.php +2 -0
  25. admin/google_search_console/class-gsc-marker.php +10 -0
  26. admin/google_search_console/class-gsc-modal.php +6 -0
  27. admin/google_search_console/class-gsc-platform-tabs.php +2 -0
  28. admin/google_search_console/class-gsc-service.php +4 -0
  29. admin/google_search_console/class-gsc-table.php +6 -0
  30. admin/google_search_console/class-gsc.php +6 -0
  31. admin/import/class-import-plugin.php +4 -0
  32. admin/import/class-import-settings.php +4 -0
  33. admin/links/class-link-column-count.php +2 -0
  34. admin/links/class-link-columns.php +3 -1
  35. admin/links/class-link-compatibility-notifier.php +2 -0
  36. admin/links/class-link-content-processor.php +4 -0
  37. admin/links/class-link-extractor.php +2 -0
  38. admin/links/class-link-factory.php +6 -0
  39. admin/links/class-link-filter.php +2 -0
  40. admin/links/class-link-installer.php +2 -0
  41. admin/links/class-link-notifier.php +2 -0
  42. admin/links/class-link-reindex-post-endpoint.php +8 -0
  43. admin/links/class-link-storage.php +4 -0
  44. admin/links/class-link-table-accessible-notifier.php +2 -0
  45. admin/links/class-link-table-accessible.php +4 -0
  46. admin/links/class-link-type-classifier.php +4 -0
  47. admin/links/class-link-watcher.php +2 -0
  48. admin/links/class-link.php +10 -0
  49. admin/menu/class-replacevar-editor.php +2 -0
  50. admin/metabox/class-abstract-sectioned-metabox-tab.php +95 -0
  51. admin/metabox/class-metabox-addon-section.php +1 -1
  52. admin/metabox/class-metabox-collapsible.php +84 -0
  53. admin/metabox/class-metabox-collapsibles-section.php +59 -0
  54. admin/metabox/class-metabox-editor.php +0 -1
  55. admin/metabox/class-metabox-form-tab.php +16 -0
  56. admin/metabox/class-metabox-section-react.php +10 -0
  57. admin/metabox/class-metabox-tab-section.php +6 -57
  58. admin/metabox/class-metabox.php +36 -28
  59. admin/notifiers/class-configuration-notifier.php +6 -0
  60. admin/onpage/class-onpage-option.php +9 -1
  61. admin/onpage/class-onpage-request.php +3 -1
  62. admin/onpage/class-ryte-service.php +2 -0
  63. admin/recalculate/class-recalculate.php +2 -0
  64. admin/statistics/class-statistics-service.php +6 -0
  65. admin/taxonomy/class-taxonomy-columns.php +4 -0
  66. admin/taxonomy/class-taxonomy-fields-presenter.php +2 -0
  67. admin/taxonomy/class-taxonomy-metabox.php +42 -48
  68. admin/taxonomy/class-taxonomy-settings-fields.php +3 -1
  69. admin/taxonomy/class-taxonomy.php +9 -0
  70. admin/tracking/class-tracking.php +6 -0
  71. admin/views/class-yoast-input-select.php +6 -0
  72. admin/views/paper-collapsible.php +27 -8
  73. admin/views/tabs/dashboard/dashboard.php +7 -1
  74. admin/views/tabs/metas/archives.php +1 -0
  75. admin/views/tabs/metas/breadcrumbs.php +2 -1
  76. admin/views/tabs/metas/general.php +2 -1
  77. admin/views/tabs/metas/media.php +1 -0
  78. admin/views/tabs/metas/post-types.php +1 -0
  79. admin/views/tabs/metas/rss.php +1 -0
  80. admin/views/tabs/metas/taxonomies.php +1 -0
  81. config/composer/actions.php +65 -0
  82. config/dependency-injection/container-compiler.php +52 -0
  83. config/dependency-injection/custom-loader.php +218 -0
  84. config/dependency-injection/loader-pass.php +72 -0
  85. config/dependency-injection/services.php +55 -0
  86. config/php-scoper/dependency-injection.inc.php +41 -0
  87. config/php-scoper/guzzlehttp.inc.php +32 -0
  88. config/php-scoper/idiorm.inc.php +47 -0
  89. config/php-scoper/oauth2-client.inc.php +54 -0
  90. config/php-scoper/psr.inc.php +32 -0
  91. config/php-scoper/ruckusing.inc.php +181 -0
  92. css/dist/{admin-global-1170-rtl.min.css → admin-global-1180-rtl.min.css} +0 -0
  93. css/dist/{admin-global-1170.min.css → admin-global-1180.min.css} +0 -0
  94. css/dist/{adminbar-1170-rtl.min.css → adminbar-1180-rtl.min.css} +0 -0
  95. css/dist/{adminbar-1170.min.css → adminbar-1180.min.css} +0 -0
  96. css/dist/{alerts-1170-rtl.min.css → alerts-1180-rtl.min.css} +0 -0
  97. css/dist/{alerts-1170.min.css → alerts-1180.min.css} +0 -0
  98. css/dist/{dashboard-1170-rtl.min.css → dashboard-1180-rtl.min.css} +0 -0
  99. css/dist/{dashboard-1170.min.css → dashboard-1180.min.css} +0 -0
  100. css/dist/{edit-page-1170-rtl.min.css → edit-page-1180-rtl.min.css} +0 -0
  101. css/dist/{edit-page-1170.min.css → edit-page-1180.min.css} +0 -0
  102. css/dist/{featured-image-1170-rtl.min.css → featured-image-1180-rtl.min.css} +0 -0
  103. css/dist/{featured-image-1170.min.css → featured-image-1180.min.css} +0 -0
  104. css/dist/{filter-explanation-1170-rtl.min.css → filter-explanation-1180-rtl.min.css} +0 -0
  105. css/dist/{filter-explanation-1170.min.css → filter-explanation-1180.min.css} +0 -0
  106. css/dist/{inside-editor-1170-rtl.min.css → inside-editor-1180-rtl.min.css} +0 -0
  107. css/dist/{inside-editor-1170.min.css → inside-editor-1180.min.css} +0 -0
  108. css/dist/metabox-1170-rtl.min.css +0 -1
  109. css/dist/metabox-1170.min.css +0 -1
  110. css/dist/metabox-1180-rtl.min.css +1 -0
  111. css/dist/metabox-1180.min.css +5 -0
  112. css/dist/{metabox-primary-category-1170-rtl.min.css → metabox-primary-category-1180-rtl.min.css} +0 -0
  113. css/dist/{metabox-primary-category-1170.min.css → metabox-primary-category-1180.min.css} +0 -0
  114. css/dist/{search-appearance-1170-rtl.min.css → search-appearance-1180-rtl.min.css} +0 -0
  115. css/dist/{search-appearance-1170.min.css → search-appearance-1180.min.css} +0 -0
  116. css/dist/{structured-data-blocks-1170-rtl.min.css → structured-data-blocks-1180-rtl.min.css} +0 -0
  117. css/dist/{structured-data-blocks-1170.min.css → structured-data-blocks-1180.min.css} +0 -0
  118. css/dist/{toggle-switch-1170-rtl.min.css → toggle-switch-1180-rtl.min.css} +0 -0
  119. css/dist/{toggle-switch-1170.min.css → toggle-switch-1180.min.css} +0 -0
  120. css/dist/{wpseo-dismissible-1170-rtl.min.css → wpseo-dismissible-1180-rtl.min.css} +0 -0
  121. css/dist/{wpseo-dismissible-1170.min.css → wpseo-dismissible-1180.min.css} +0 -0
  122. css/dist/{yoast-components-1170-rtl.min.css → yoast-components-1180-rtl.min.css} +0 -0
  123. css/dist/{yoast-components-1170.min.css → yoast-components-1180.min.css} +0 -0
  124. css/dist/{yoast-extensions-1170-rtl.min.css → yoast-extensions-1180-rtl.min.css} +0 -0
  125. css/dist/{yoast-extensions-1170.min.css → yoast-extensions-1180.min.css} +0 -0
  126. css/dist/yst_plugin_tools-1170-rtl.min.css +0 -1
  127. css/dist/yst_plugin_tools-1170.min.css +0 -1
  128. css/dist/yst_plugin_tools-1180-rtl.min.css +1 -0
  129. css/dist/yst_plugin_tools-1180.min.css +1 -0
  130. css/dist/{yst_seo_score-1170-rtl.min.css → yst_seo_score-1180-rtl.min.css} +0 -0
  131. css/dist/{yst_seo_score-1170.min.css → yst_seo_score-1180.min.css} +0 -0
  132. deprecated/class-cornerstone.php +4 -0
  133. deprecated/class-yoast-modal.php +2 -0
  134. frontend/class-breadcrumbs.php +2 -1
  135. frontend/class-frontend.php +14 -1
  136. frontend/class-opengraph-image.php +2 -0
  137. frontend/class-twitter.php +2 -0
  138. frontend/schema/class-schema-howto.php +1 -0
  139. frontend/schema/class-schema-webpage.php +2 -2
  140. inc/class-structured-data-blocks.php +2 -0
  141. inc/class-upgrade-history.php +0 -1
  142. inc/class-wpseo-image-utils.php +1 -1
  143. inc/class-wpseo-rank.php +20 -2
  144. inc/class-wpseo-shortlinker.php +14 -0
  145. inc/class-wpseo-utils.php +1 -0
  146. inc/options/class-wpseo-option-titles.php +4 -2
  147. inc/options/class-wpseo-options.php +0 -1
  148. inc/sitemaps/class-author-sitemap-provider.php +2 -0
  149. inc/sitemaps/class-post-type-sitemap-provider.php +4 -0
  150. inc/sitemaps/class-sitemap-image-parser.php +2 -0
  151. inc/sitemaps/class-sitemaps-renderer.php +4 -0
  152. inc/sitemaps/class-sitemaps.php +10 -0
  153. inc/sitemaps/class-taxonomy-sitemap-provider.php +2 -0
  154. inc/sitemaps/interface-sitemap-cache-data.php +2 -0
  155. js/dist/{analysis-1170.min.js → analysis-1180.min.js} +0 -0
  156. js/dist/{babel-polyfill-1170.min.js → babel-polyfill-1180.min.js} +0 -0
  157. js/dist/{commons-1170.min.js → commons-1180.min.js} +0 -0
  158. js/dist/{components-1170.min.js → components-1180.min.js} +0 -0
  159. js/dist/{configuration-wizard-1170.min.js → configuration-wizard-1180.min.js} +0 -0
  160. js/dist/{search-appearance-1170.min.js → search-appearance-1180.min.js} +0 -0
  161. js/dist/{styled-components-1170.min.js → styled-components-1180.min.js} +0 -0
  162. js/dist/{wp-apiFetch-1170.min.js → wp-apiFetch-1180.min.js} +0 -0
  163. js/dist/{wp-components-1170.min.js → wp-components-1180.min.js} +0 -0
  164. js/dist/{wp-compose-1170.min.js → wp-compose-1180.min.js} +0 -0
  165. js/dist/{wp-data-1170.min.js → wp-data-1180.min.js} +0 -0
  166. js/dist/{wp-element-1170.min.js → wp-element-1180.min.js} +0 -0
  167. js/dist/{wp-i18n-1170.min.js → wp-i18n-1180.min.js} +0 -0
  168. js/dist/{wp-richText-1170.min.js → wp-richText-1180.min.js} +0 -0
  169. js/dist/{wp-seo-admin-1170.min.js → wp-seo-admin-1180.min.js} +0 -0
  170. js/dist/{wp-seo-admin-global-1170.min.js → wp-seo-admin-global-1180.min.js} +0 -0
  171. js/dist/{wp-seo-admin-gsc-1170.min.js → wp-seo-admin-gsc-1180.min.js} +0 -0
  172. js/dist/{wp-seo-admin-media-1170.min.js → wp-seo-admin-media-1180.min.js} +0 -0
  173. js/dist/wp-seo-analysis-worker-1170.min.js +0 -21
admin/class-admin-gutenberg-compatibility-notification.php CHANGED
@@ -18,11 +18,15 @@ class WPSEO_Admin_Gutenberg_Compatibility_Notification implements WPSEO_WordPres
18
  private $notification_id = 'wpseo-outdated-gutenberg-plugin';
19
 
20
  /**
 
 
21
  * @var WPSEO_Gutenberg_Compatibility
22
  */
23
  private $compatibility_checker;
24
 
25
  /**
 
 
26
  * @var Yoast_Notification_Center
27
  */
28
  private $notification_center;
18
  private $notification_id = 'wpseo-outdated-gutenberg-plugin';
19
 
20
  /**
21
+ * Instance of gutenberg compatibility checker.
22
+ *
23
  * @var WPSEO_Gutenberg_Compatibility
24
  */
25
  private $compatibility_checker;
26
 
27
  /**
28
+ * Instance of Yoast Notification Center.
29
+ *
30
  * @var Yoast_Notification_Center
31
  */
32
  private $notification_center;
admin/class-admin-init.php CHANGED
@@ -469,7 +469,7 @@ class WPSEO_Admin_Init {
469
  $message .= sprintf(
470
  /* translators: %1$s expands to Yoast SEO, %2$s expands to 5.0 */
471
  __(
472
- 'If you’ve held off on updating to %2$s and higher because of the new Gutenberg editor, please install the Classic editor plugin. It will give you the same editing experience you have now, but also the security of newer versions of WordPress and %1$s.',
473
  'wordpress-seo'
474
  ),
475
  'Yoast SEO',
469
  $message .= sprintf(
470
  /* translators: %1$s expands to Yoast SEO, %2$s expands to 5.0 */
471
  __(
472
+ 'If you’ve held off on updating to %2$s and higher because of the new Gutenberg editor, please install the Classic Editor plugin. It will give you the same editing experience you have now, but also the security of newer versions of WordPress and %1$s.',
473
  'wordpress-seo'
474
  ),
475
  'Yoast SEO',
admin/class-asset.php CHANGED
@@ -25,21 +25,29 @@ class WPSEO_Admin_Asset {
25
  const TYPE_CSS = 'css';
26
 
27
  /**
 
 
28
  * @var string
29
  */
30
  const NAME = 'name';
31
 
32
  /**
 
 
33
  * @var string
34
  */
35
  const SRC = 'src';
36
 
37
  /**
 
 
38
  * @var string
39
  */
40
  const DEPS = 'deps';
41
 
42
  /**
 
 
43
  * @var string
44
  */
45
  const VERSION = 'version';
@@ -47,11 +55,15 @@ class WPSEO_Admin_Asset {
47
  /* Style specific. */
48
 
49
  /**
 
 
50
  * @var string
51
  */
52
  const MEDIA = 'media';
53
 
54
  /**
 
 
55
  * @var string
56
  */
57
  const RTL = 'rtl';
@@ -59,6 +71,8 @@ class WPSEO_Admin_Asset {
59
  /* Script specific. */
60
 
61
  /**
 
 
62
  * @var string
63
  */
64
  const IN_FOOTER = 'in_footer';
@@ -136,6 +150,8 @@ class WPSEO_Admin_Asset {
136
  );
137
 
138
  /**
 
 
139
  * @param array $args The arguments for this asset.
140
  *
141
  * @throws InvalidArgumentException Throws when no name or src has been provided.
25
  const TYPE_CSS = 'css';
26
 
27
  /**
28
+ * The name option identifier.
29
+ *
30
  * @var string
31
  */
32
  const NAME = 'name';
33
 
34
  /**
35
+ * The source option identifier.
36
+ *
37
  * @var string
38
  */
39
  const SRC = 'src';
40
 
41
  /**
42
+ * The dependencies option identifier.
43
+ *
44
  * @var string
45
  */
46
  const DEPS = 'deps';
47
 
48
  /**
49
+ * The version option identifier.
50
+ *
51
  * @var string
52
  */
53
  const VERSION = 'version';
55
  /* Style specific. */
56
 
57
  /**
58
+ * The media option identifier.
59
+ *
60
  * @var string
61
  */
62
  const MEDIA = 'media';
63
 
64
  /**
65
+ * The rtl option identifier.
66
+ *
67
  * @var string
68
  */
69
  const RTL = 'rtl';
71
  /* Script specific. */
72
 
73
  /**
74
+ * The "in footer" option identifier.
75
+ *
76
  * @var string
77
  */
78
  const IN_FOOTER = 'in_footer';
150
  );
151
 
152
  /**
153
+ * Constructs an instance of the WPSEO_Admin_Asset class.
154
+ *
155
  * @param array $args The arguments for this asset.
156
  *
157
  * @throws InvalidArgumentException Throws when no name or src has been provided.
admin/class-customizer.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Customizer {
12
 
13
  /**
 
 
14
  * @var WP_Customize_Manager
15
  */
16
  protected $wp_customize;
@@ -66,7 +68,7 @@ class WPSEO_Customizer {
66
  $this->wp_customize = $wp_customize;
67
 
68
  $this->breadcrumbs_section();
69
- $this->breadcrumbs_blog_remove_setting();
70
  $this->breadcrumbs_separator_setting();
71
  $this->breadcrumbs_home_setting();
72
  $this->breadcrumbs_prefix_setting();
@@ -99,25 +101,25 @@ class WPSEO_Customizer {
99
  }
100
 
101
  /**
102
- * Adds the breadcrumbs remove blog checkbox.
103
  */
104
- private function breadcrumbs_blog_remove_setting() {
105
  $index = 'breadcrumbs-display-blog-page';
106
  $control_args = array(
107
- 'label' => __( 'Remove blog page from breadcrumbs', 'wordpress-seo' ),
108
  'type' => 'checkbox',
109
- 'active_callback' => array( $this, 'breadcrumbs_blog_remove_active_cb' ),
110
  );
111
 
112
  $this->add_setting_and_control( $index, $control_args );
113
  }
114
 
115
  /**
116
- * Returns whether or not to show the breadcrumbs blog remove option.
117
  *
118
  * @return bool
119
  */
120
- public function breadcrumbs_blog_remove_active_cb() {
121
  return 'page' === get_option( 'show_on_front' );
122
  }
123
 
11
  class WPSEO_Customizer {
12
 
13
  /**
14
+ * Holds the customize manager.
15
+ *
16
  * @var WP_Customize_Manager
17
  */
18
  protected $wp_customize;
68
  $this->wp_customize = $wp_customize;
69
 
70
  $this->breadcrumbs_section();
71
+ $this->breadcrumbs_blog_show_setting();
72
  $this->breadcrumbs_separator_setting();
73
  $this->breadcrumbs_home_setting();
74
  $this->breadcrumbs_prefix_setting();
101
  }
102
 
103
  /**
104
+ * Adds the breadcrumbs show blog checkbox.
105
  */
106
+ private function breadcrumbs_blog_show_setting() {
107
  $index = 'breadcrumbs-display-blog-page';
108
  $control_args = array(
109
+ 'label' => __( 'Show blog page in breadcrumbs', 'wordpress-seo' ),
110
  'type' => 'checkbox',
111
+ 'active_callback' => array( $this, 'breadcrumbs_blog_show_active_cb' ),
112
  );
113
 
114
  $this->add_setting_and_control( $index, $control_args );
115
  }
116
 
117
  /**
118
+ * Returns whether or not to show the breadcrumbs blog show option.
119
  *
120
  * @return bool
121
  */
122
+ public function breadcrumbs_blog_show_active_cb() {
123
  return 'page' === get_option( 'show_on_front' );
124
  }
125
 
admin/class-gutenberg-compatibility.php CHANGED
@@ -15,14 +15,14 @@ class WPSEO_Gutenberg_Compatibility {
15
  *
16
  * @var string
17
  */
18
- const CURRENT_RELEASE = '6.1.1';
19
 
20
  /**
21
  * The minimally supported version of Gutenberg by the plugin.
22
  *
23
  * @var string
24
  */
25
- const MINIMUM_SUPPORTED = '6.1.1';
26
 
27
  /**
28
  * Holds the current version.
15
  *
16
  * @var string
17
  */
18
+ const CURRENT_RELEASE = '6.2.0';
19
 
20
  /**
21
  * The minimally supported version of Gutenberg by the plugin.
22
  *
23
  * @var string
24
  */
25
+ const MINIMUM_SUPPORTED = '6.2.0';
26
 
27
  /**
28
  * Holds the current version.
admin/class-meta-table-accessible.php CHANGED
@@ -11,11 +11,15 @@
11
  class WPSEO_Meta_Table_Accessible {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const ACCESSIBLE = '0';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const INACCESSBILE = '1';
11
  class WPSEO_Meta_Table_Accessible {
12
 
13
  /**
14
+ * Indicates that the table is accessible.
15
+ *
16
  * @var string
17
  */
18
  const ACCESSIBLE = '0';
19
 
20
  /**
21
+ * Indicates that the table is inaccessible.
22
+ *
23
  * @var string
24
  */
25
  const INACCESSBILE = '1';
admin/class-my-yoast-route.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_MyYoast_Route implements WPSEO_WordPress_Integration {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const PAGE_IDENTIFIER = 'wpseo_myyoast';
11
  class WPSEO_MyYoast_Route implements WPSEO_WordPress_Integration {
12
 
13
  /**
14
+ * The identifier of the page in the My Yoast route.
15
+ *
16
  * @var string
17
  */
18
  const PAGE_IDENTIFIER = 'wpseo_myyoast';
admin/class-paper-presenter.php CHANGED
@@ -35,17 +35,19 @@ class WPSEO_Paper_Presenter {
35
  * WPSEO_presenter_paper constructor.
36
  *
37
  * @param string $title The title of the paper.
38
- * @param string $view_file The path to the view file.
39
  * @param array $settings Optional. Settings for the paper.
40
  */
41
- public function __construct( $title, $view_file, array $settings = array() ) {
42
  $defaults = array(
43
- 'paper_id' => null,
44
- 'collapsible' => false,
45
- 'expanded' => false,
46
- 'help_text' => '',
47
- 'title_after' => '',
48
- 'view_data' => array(),
 
 
49
  );
50
 
51
  $this->settings = wp_parse_args( $settings, $defaults );
@@ -59,7 +61,17 @@ class WPSEO_Paper_Presenter {
59
  * @return string The rendered paper.
60
  */
61
  public function get_output() {
62
- extract( $this->get_view_variables(), EXTR_SKIP );
 
 
 
 
 
 
 
 
 
 
63
 
64
  ob_start();
65
  require WPSEO_PATH . 'admin/views/paper-collapsible.php';
@@ -79,6 +91,7 @@ class WPSEO_Paper_Presenter {
79
  }
80
 
81
  $view_variables = array(
 
82
  'collapsible' => $this->settings['collapsible'],
83
  'collapsible_config' => $this->collapsible_config(),
84
  'title_after' => $this->settings['title_after'],
35
  * WPSEO_presenter_paper constructor.
36
  *
37
  * @param string $title The title of the paper.
38
+ * @param string $view_file Optional. The path to the view file. Use the content setting if you do not wish to use a view file.
39
  * @param array $settings Optional. Settings for the paper.
40
  */
41
+ public function __construct( $title, $view_file = null, array $settings = array() ) {
42
  $defaults = array(
43
+ 'paper_id' => null,
44
+ 'collapsible' => false,
45
+ 'expanded' => false,
46
+ 'help_text' => '',
47
+ 'title_after' => '',
48
+ 'class' => '',
49
+ 'content' => '',
50
+ 'view_data' => array(),
51
  );
52
 
53
  $this->settings = wp_parse_args( $settings, $defaults );
61
  * @return string The rendered paper.
62
  */
63
  public function get_output() {
64
+ $view_variables = $this->get_view_variables();
65
+
66
+ extract( $view_variables, EXTR_SKIP );
67
+
68
+ $content = $this->settings['content'];
69
+
70
+ if ( $this->view_file !== null ) {
71
+ ob_start();
72
+ require $this->view_file;
73
+ $content = ob_get_clean();
74
+ }
75
 
76
  ob_start();
77
  require WPSEO_PATH . 'admin/views/paper-collapsible.php';
91
  }
92
 
93
  $view_variables = array(
94
+ 'class' => $this->settings['class'],
95
  'collapsible' => $this->settings['collapsible'],
96
  'collapsible_config' => $this->collapsible_config(),
97
  'title_after' => $this->settings['title_after'],
admin/class-social-admin.php CHANGED
@@ -72,12 +72,11 @@ class WPSEO_Social_Admin extends WPSEO_Metabox {
72
  /**
73
  * Returns the metabox section for the social settings.
74
  *
75
- * @return WPSEO_Metabox_Tab_Section
76
  */
77
  public function get_meta_section() {
78
  $tabs = array();
79
  $social_meta_fields = WPSEO_Meta::get_meta_field_defs( 'social' );
80
- $single = true;
81
 
82
  $opengraph = WPSEO_Options::get( 'opengraph' );
83
  $twitter = WPSEO_Options::get( 'twitter' );
@@ -89,32 +88,22 @@ class WPSEO_Social_Admin extends WPSEO_Metabox {
89
  wp_nonce_field( 'yoast_free_metabox_social', 'yoast_free_metabox_social_nonce' );
90
 
91
  if ( $opengraph === true ) {
92
- $tabs[] = new WPSEO_Metabox_Form_Tab(
93
  'facebook',
94
  $this->get_social_tab_content( 'opengraph', $social_meta_fields ),
95
- '<span class="screen-reader-text">' . __( 'Facebook / Open Graph metadata', 'wordpress-seo' ) . '</span><span class="dashicons dashicons-facebook-alt"></span>',
96
- array(
97
- 'link_aria_label' => __( 'Facebook / Open Graph metadata', 'wordpress-seo' ),
98
- 'link_class' => 'yoast-tooltip yoast-tooltip-se',
99
- 'single' => $single,
100
- )
101
  );
102
  }
103
 
104
  if ( $twitter === true ) {
105
- $tabs[] = new WPSEO_Metabox_Form_Tab(
106
  'twitter',
107
  $this->get_social_tab_content( 'twitter', $social_meta_fields ),
108
- '<span class="screen-reader-text">' . __( 'Twitter metadata', 'wordpress-seo' ) . '</span><span class="dashicons dashicons-twitter"></span>',
109
- array(
110
- 'link_aria_label' => __( 'Twitter metadata', 'wordpress-seo' ),
111
- 'link_class' => 'yoast-tooltip yoast-tooltip-se',
112
- 'single' => $single,
113
- )
114
  );
115
  }
116
 
117
- return new WPSEO_Metabox_Tab_Section(
118
  'social',
119
  '<span class="dashicons dashicons-share"></span>' . __( 'Social', 'wordpress-seo' ),
120
  $tabs
@@ -143,9 +132,29 @@ class WPSEO_Social_Admin extends WPSEO_Metabox {
143
  $tab_content .= $this->do_meta_box( $meta_field_defs[ $field_name ], $field_name );
144
  }
145
 
 
 
 
 
 
 
 
 
 
146
  return $tab_content;
147
  }
148
 
 
 
 
 
 
 
 
 
 
 
 
149
  /**
150
  * Returns the Upgrade to Premium notice.
151
  *
72
  /**
73
  * Returns the metabox section for the social settings.
74
  *
75
+ * @return WPSEO_Metabox_Collapsibles_Sections
76
  */
77
  public function get_meta_section() {
78
  $tabs = array();
79
  $social_meta_fields = WPSEO_Meta::get_meta_field_defs( 'social' );
 
80
 
81
  $opengraph = WPSEO_Options::get( 'opengraph' );
82
  $twitter = WPSEO_Options::get( 'twitter' );
88
  wp_nonce_field( 'yoast_free_metabox_social', 'yoast_free_metabox_social_nonce' );
89
 
90
  if ( $opengraph === true ) {
91
+ $tabs[] = new WPSEO_Metabox_Collapsible(
92
  'facebook',
93
  $this->get_social_tab_content( 'opengraph', $social_meta_fields ),
94
+ __( 'Facebook', 'wordpress-seo' )
 
 
 
 
 
95
  );
96
  }
97
 
98
  if ( $twitter === true ) {
99
+ $tabs[] = new WPSEO_Metabox_Collapsible(
100
  'twitter',
101
  $this->get_social_tab_content( 'twitter', $social_meta_fields ),
102
+ __( 'Twitter', 'wordpress-seo' )
 
 
 
 
 
103
  );
104
  }
105
 
106
+ return new WPSEO_Metabox_Collapsibles_Sections(
107
  'social',
108
  '<span class="dashicons dashicons-share"></span>' . __( 'Social', 'wordpress-seo' ),
109
  $tabs
132
  $tab_content .= $this->do_meta_box( $meta_field_defs[ $field_name ], $field_name );
133
  }
134
 
135
+ $features = new WPSEO_Features();
136
+ /**
137
+ * If premium hide the form to show the social preview instead, we still need the fields to be output because
138
+ * the values of the social preview are saved in the hidden field.
139
+ */
140
+ if ( $features->is_premium() ) {
141
+ return $this->hide_form( $tab_content );
142
+ }
143
+
144
  return $tab_content;
145
  }
146
 
147
+ /**
148
+ * Hides the given output when rendered to HTML.
149
+ *
150
+ * @param string $tab_content The social tab content.
151
+ *
152
+ * @return string The content.
153
+ */
154
+ public function hide_form( $tab_content ) {
155
+ return '<div class="hidden">' . $tab_content . '</div>';
156
+ }
157
+
158
  /**
159
  * Returns the Upgrade to Premium notice.
160
  *
admin/class-yoast-dashboard-widget.php CHANGED
@@ -18,6 +18,8 @@ class Yoast_Dashboard_Widget implements WPSEO_WordPress_Integration {
18
  const CACHE_TRANSIENT_KEY = 'wpseo-dashboard-totals';
19
 
20
  /**
 
 
21
  * @var WPSEO_Admin_Asset_Manager
22
  */
23
  protected $asset_manager;
18
  const CACHE_TRANSIENT_KEY = 'wpseo-dashboard-totals';
19
 
20
  /**
21
+ * Holds an instance of the admin asset manager.
22
+ *
23
  * @var WPSEO_Admin_Asset_Manager
24
  */
25
  protected $asset_manager;
admin/config-ui/class-configuration-page.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * @class WPSEO_Configuration_Wizard Loads the Yoast configuration wizard.
10
  */
11
  class WPSEO_Configuration_Page {
12
 
6
  */
7
 
8
  /**
9
+ * Loads the Yoast configuration wizard.
10
  */
11
  class WPSEO_Configuration_Page {
12
 
admin/config-ui/components/class-component-mailchimp-signup.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Config_Component_Mailchimp_Signup implements WPSEO_Config_Component {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const META_NAME = 'wpseo-has-mailchimp-signup';
11
  class WPSEO_Config_Component_Mailchimp_Signup implements WPSEO_Config_Component {
12
 
13
  /**
14
+ * The name of the mailchimp signup meta key.
15
+ *
16
  * @var string
17
  */
18
  const META_NAME = 'wpseo-has-mailchimp-signup';
admin/config-ui/components/interface-component.php CHANGED
@@ -34,6 +34,8 @@ interface WPSEO_Config_Component {
34
  public function set_data( $data );
35
 
36
  /**
 
 
37
  * @return WPSEO_Config_Field
38
  */
39
  public function get_field();
34
  public function set_data( $data );
35
 
36
  /**
37
+ * Get onboarding wizard component field.
38
+ *
39
  * @return WPSEO_Config_Field
40
  */
41
  public function get_field();
admin/endpoints/class-endpoint-file-size.php CHANGED
@@ -11,16 +11,22 @@
11
  class WPSEO_Endpoint_File_Size implements WPSEO_Endpoint {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const REST_NAMESPACE = 'yoast/v1';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const ENDPOINT_SINGULAR = 'file_size';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  const CAPABILITY_RETRIEVE = 'manage_options';
11
  class WPSEO_Endpoint_File_Size implements WPSEO_Endpoint {
12
 
13
  /**
14
+ * The namespace of the REST route.
15
+ *
16
  * @var string
17
  */
18
  const REST_NAMESPACE = 'yoast/v1';
19
 
20
  /**
21
+ * The route of the endpoint to retrieve the file size.
22
+ *
23
  * @var string
24
  */
25
  const ENDPOINT_SINGULAR = 'file_size';
26
 
27
  /**
28
+ * The name of the capability needed to retrieve data using the endpoints.
29
+ *
30
  * @var string
31
  */
32
  const CAPABILITY_RETRIEVE = 'manage_options';
admin/endpoints/class-endpoint-indexable.php CHANGED
@@ -11,21 +11,29 @@
11
  class WPSEO_Endpoint_Indexable implements WPSEO_Endpoint, WPSEO_Endpoint_Storable {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const REST_NAMESPACE = 'yoast/v1';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const ENDPOINT_SINGULAR = 'indexables/(?P<object_type>\w+)/(?P<object_id>\d+)';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  const CAPABILITY_RETRIEVE = 'manage_options';
27
 
28
  /**
 
 
29
  * @var string
30
  */
31
  const CAPABILITY_STORE = 'manage_options';
11
  class WPSEO_Endpoint_Indexable implements WPSEO_Endpoint, WPSEO_Endpoint_Storable {
12
 
13
  /**
14
+ * The namespace of the REST route.
15
+ *
16
  * @var string
17
  */
18
  const REST_NAMESPACE = 'yoast/v1';
19
 
20
  /**
21
+ * The route of the endpoint to retrieve or patch the indexable.
22
+ *
23
  * @var string
24
  */
25
  const ENDPOINT_SINGULAR = 'indexables/(?P<object_type>\w+)/(?P<object_id>\d+)';
26
 
27
  /**
28
+ * The name of the capability needed to retrieve data using the endpoints.
29
+ *
30
  * @var string
31
  */
32
  const CAPABILITY_RETRIEVE = 'manage_options';
33
 
34
  /**
35
+ * The name of the capability needed to store data using the endpoints.
36
+ *
37
  * @var string
38
  */
39
  const CAPABILITY_STORE = 'manage_options';
admin/endpoints/class-endpoint-ryte.php CHANGED
@@ -11,16 +11,22 @@
11
  class WPSEO_Endpoint_Ryte implements WPSEO_Endpoint {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const REST_NAMESPACE = 'yoast/v1';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const ENDPOINT_RETRIEVE = 'ryte';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  const CAPABILITY_RETRIEVE = 'manage_options';
11
  class WPSEO_Endpoint_Ryte implements WPSEO_Endpoint {
12
 
13
  /**
14
+ * The namespace of the REST route.
15
+ *
16
  * @var string
17
  */
18
  const REST_NAMESPACE = 'yoast/v1';
19
 
20
  /**
21
+ * The route of the ryte endpoint.
22
+ *
23
  * @var string
24
  */
25
  const ENDPOINT_RETRIEVE = 'ryte';
26
 
27
  /**
28
+ * The name of the capability needed to retrieve data using the endpoints.
29
+ *
30
  * @var string
31
  */
32
  const CAPABILITY_RETRIEVE = 'manage_options';
admin/endpoints/class-endpoint-statistics.php CHANGED
@@ -11,16 +11,22 @@
11
  class WPSEO_Endpoint_Statistics implements WPSEO_Endpoint {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const REST_NAMESPACE = 'yoast/v1';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const ENDPOINT_RETRIEVE = 'statistics';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  const CAPABILITY_RETRIEVE = 'read';
11
  class WPSEO_Endpoint_Statistics implements WPSEO_Endpoint {
12
 
13
  /**
14
+ * The namespace of the REST route.
15
+ *
16
  * @var string
17
  */
18
  const REST_NAMESPACE = 'yoast/v1';
19
 
20
  /**
21
+ * The route of the statistics endpoint.
22
+ *
23
  * @var string
24
  */
25
  const ENDPOINT_RETRIEVE = 'statistics';
26
 
27
  /**
28
+ * The name of the capability needed to retrieve data using the endpoints.
29
+ *
30
  * @var string
31
  */
32
  const CAPABILITY_RETRIEVE = 'read';
admin/filters/class-abstract-post-filter.php CHANGED
@@ -11,6 +11,8 @@
11
  abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const FILTER_QUERY_ARG = 'yoast_filter';
11
  abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration {
12
 
13
  /**
14
+ * The filter's query argument.
15
+ *
16
  * @var string
17
  */
18
  const FILTER_QUERY_ARG = 'yoast_filter';
admin/formatter/class-post-metabox-formatter.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
13
  /**
 
 
14
  * @var WP_Post
15
  */
16
  private $post;
11
  class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
13
  /**
14
+ * Holds the WordPress Post.
15
+ *
16
  * @var WP_Post
17
  */
18
  private $post;
admin/formatter/class-term-metabox-formatter.php CHANGED
@@ -11,11 +11,15 @@
11
  class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
13
  /**
 
 
14
  * @var WP_Term|stdClass
15
  */
16
  private $term;
17
 
18
  /**
 
 
19
  * @var stdClass
20
  */
21
  private $taxonomy;
11
  class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
13
  /**
14
+ * The term the metabox formatter is for.
15
+ *
16
  * @var WP_Term|stdClass
17
  */
18
  private $term;
19
 
20
  /**
21
+ * The term's taxonomy.
22
+ *
23
  * @var stdClass
24
  */
25
  private $taxonomy;
admin/google_search_console/class-gsc-config.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_GSC_Config {
12
 
13
  /**
 
 
14
  * @var array
15
  */
16
  public static $gsc = array(
11
  class WPSEO_GSC_Config {
12
 
13
  /**
14
+ * The Google search console configuration.
15
+ *
16
  * @var array
17
  */
18
  public static $gsc = array(
admin/google_search_console/class-gsc-count.php CHANGED
@@ -25,6 +25,8 @@ class WPSEO_GSC_Count {
25
  const OPTION_CI_COUNTS = 'wpseo_gsc_issues_counts';
26
 
27
  /**
 
 
28
  * @var WPSEO_GSC_Service
29
  */
30
  private $service;
25
  const OPTION_CI_COUNTS = 'wpseo_gsc_issues_counts';
26
 
27
  /**
28
+ * Service that fetches data from GSC API.
29
+ *
30
  * @var WPSEO_GSC_Service
31
  */
32
  private $service;
admin/google_search_console/class-gsc-issue.php CHANGED
@@ -11,21 +11,29 @@
11
  class WPSEO_GSC_Issue {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  private $url;
17
 
18
  /**
 
 
19
  * @var DateTime
20
  */
21
  private $first_detected;
22
 
23
  /**
 
 
24
  * @var DateTime
25
  */
26
  private $last_crawled;
27
 
28
  /**
 
 
29
  * @var string
30
  */
31
  private $response_code;
11
  class WPSEO_GSC_Issue {
12
 
13
  /**
14
+ * The URL of the Google Search Console issue.
15
+ *
16
  * @var string
17
  */
18
  private $url;
19
 
20
  /**
21
+ * The time of the first discovery of the Google Search Console issue.
22
+ *
23
  * @var DateTime
24
  */
25
  private $first_detected;
26
 
27
  /**
28
+ * The time of the last crawl of the URL.
29
+ *
30
  * @var DateTime
31
  */
32
  private $last_crawled;
33
 
34
  /**
35
+ * The HTTP response code of the URL.
36
+ *
37
  * @var string
38
  */
39
  private $response_code;
admin/google_search_console/class-gsc-issues.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_GSC_Issues {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  private $option_name = '';
11
  class WPSEO_GSC_Issues {
12
 
13
  /**
14
+ * Holds the option name.
15
+ *
16
  * @var string
17
  */
18
  private $option_name = '';
admin/google_search_console/class-gsc-marker.php CHANGED
@@ -11,26 +11,36 @@
11
  class WPSEO_GSC_Marker {
12
 
13
  /**
 
 
14
  * @var WPSEO_GSC_Issues
15
  */
16
  private $crawl_issues;
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  private $url = '';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  private $platform;
27
 
28
  /**
 
 
29
  * @var string
30
  */
31
  private $category;
32
 
33
  /**
 
 
34
  * @var string
35
  */
36
  private $result;
11
  class WPSEO_GSC_Marker {
12
 
13
  /**
14
+ * Holds the craw issues instance.
15
+ *
16
  * @var WPSEO_GSC_Issues
17
  */
18
  private $crawl_issues;
19
 
20
  /**
21
+ * Holds the URL.
22
+ *
23
  * @var string
24
  */
25
  private $url = '';
26
 
27
  /**
28
+ * Holds the platform (desktop, mobile, feature phone).
29
+ *
30
  * @var string
31
  */
32
  private $platform;
33
 
34
  /**
35
+ * Holds the category.
36
+ *
37
  * @var string
38
  */
39
  private $category;
40
 
41
  /**
42
+ * Holds the result.
43
+ *
44
  * @var string
45
  */
46
  private $result;
admin/google_search_console/class-gsc-modal.php CHANGED
@@ -11,16 +11,22 @@
11
  class WPSEO_GSC_Modal {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  protected $view;
17
 
18
  /**
 
 
19
  * @var int
20
  */
21
  protected $height;
22
 
23
  /**
 
 
24
  * @var array
25
  */
26
  protected $view_vars;
11
  class WPSEO_GSC_Modal {
12
 
13
  /**
14
+ * Path to the modal view.
15
+ *
16
  * @var string
17
  */
18
  protected $view;
19
 
20
  /**
21
+ * The modal height.
22
+ *
23
  * @var int
24
  */
25
  protected $height;
26
 
27
  /**
28
+ * Variables to be passed to the view.
29
+ *
30
  * @var array
31
  */
32
  protected $view_vars;
admin/google_search_console/class-gsc-platform-tabs.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_GSC_Platform_Tabs {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  private $current_tab;
11
  class WPSEO_GSC_Platform_Tabs {
12
 
13
  /**
14
+ * The current active tab.
15
+ *
16
  * @var string
17
  */
18
  private $current_tab;
admin/google_search_console/class-gsc-service.php CHANGED
@@ -11,11 +11,15 @@
11
  class WPSEO_GSC_Service {
12
 
13
  /**
 
 
14
  * @var Yoast_Api_Google_Client
15
  */
16
  private $client;
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  private $profile;
11
  class WPSEO_GSC_Service {
12
 
13
  /**
14
+ * Client to connect to the google API.
15
+ *
16
  * @var Yoast_Api_Google_Client
17
  */
18
  private $client;
19
 
20
  /**
21
+ * The google search console profile.
22
+ *
23
  * @var string
24
  */
25
  private $profile;
admin/google_search_console/class-gsc-table.php CHANGED
@@ -15,11 +15,15 @@ if ( ! class_exists( 'WP_List_Table' ) ) {
15
  class WPSEO_GSC_Table extends WP_List_Table {
16
 
17
  /**
 
 
18
  * @var int
19
  */
20
  const FREE_MODAL_HEIGHT = 140;
21
 
22
  /**
 
 
23
  * @var string
24
  */
25
  private $search_string;
@@ -39,6 +43,8 @@ class WPSEO_GSC_Table extends WP_List_Table {
39
  private $per_page = 50;
40
 
41
  /**
 
 
42
  * @var integer
43
  */
44
  private $current_page = 1;
15
  class WPSEO_GSC_Table extends WP_List_Table {
16
 
17
  /**
18
+ * Modal height.
19
+ *
20
  * @var int
21
  */
22
  const FREE_MODAL_HEIGHT = 140;
23
 
24
  /**
25
+ * The search phrase.
26
+ *
27
  * @var string
28
  */
29
  private $search_string;
43
  private $per_page = 50;
44
 
45
  /**
46
+ * Current page.
47
+ *
48
  * @var integer
49
  */
50
  private $current_page = 1;
admin/google_search_console/class-gsc.php CHANGED
@@ -18,16 +18,22 @@ class WPSEO_GSC implements WPSEO_WordPress_Integration {
18
  const OPTION_WPSEO_GSC = 'wpseo-gsc';
19
 
20
  /**
 
 
21
  * @var WPSEO_GSC_Service
22
  */
23
  private $service;
24
 
25
  /**
 
 
26
  * @var WPSEO_GSC_Category_Filters
27
  */
28
  protected $category_filter;
29
 
30
  /**
 
 
31
  * @var WPSEO_GSC_Issues
32
  */
33
  protected $issue_fetch;
18
  const OPTION_WPSEO_GSC = 'wpseo-gsc';
19
 
20
  /**
21
+ * Holds the service instance.
22
+ *
23
  * @var WPSEO_GSC_Service
24
  */
25
  private $service;
26
 
27
  /**
28
+ * Holds the category filter instance.
29
+ *
30
  * @var WPSEO_GSC_Category_Filters
31
  */
32
  protected $category_filter;
33
 
34
  /**
35
+ * Holds the issues instance.
36
+ *
37
  * @var WPSEO_GSC_Issues
38
  */
39
  protected $issue_fetch;
admin/import/class-import-plugin.php CHANGED
@@ -13,11 +13,15 @@
13
  class WPSEO_Import_Plugin {
14
 
15
  /**
 
 
16
  * @var WPSEO_Import_Status
17
  */
18
  public $status;
19
 
20
  /**
 
 
21
  * @var WPSEO_Plugin_Importer
22
  */
23
  protected $importer;
13
  class WPSEO_Import_Plugin {
14
 
15
  /**
16
+ * Holds the status of and message about imports.
17
+ *
18
  * @var WPSEO_Import_Status
19
  */
20
  public $status;
21
 
22
  /**
23
+ * Class with functionality to import meta data from other plugins.
24
+ *
25
  * @var WPSEO_Plugin_Importer
26
  */
27
  protected $importer;
admin/import/class-import-settings.php CHANGED
@@ -20,11 +20,15 @@ class WPSEO_Import_Settings {
20
  const NONCE_ACTION = 'wpseo-import-settings';
21
 
22
  /**
 
 
23
  * @var WPSEO_Import_Status
24
  */
25
  public $status;
26
 
27
  /**
 
 
28
  * @var string
29
  */
30
  private $old_wpseo_version;
20
  const NONCE_ACTION = 'wpseo-import-settings';
21
 
22
  /**
23
+ * Holds the import status instance.
24
+ *
25
  * @var WPSEO_Import_Status
26
  */
27
  public $status;
28
 
29
  /**
30
+ * Holds the old WPSEO version.
31
+ *
32
  * @var string
33
  */
34
  private $old_wpseo_version;
admin/links/class-link-column-count.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Column_Count {
12
 
13
  /**
 
 
14
  * @var array
15
  */
16
  protected $count = array();
11
  class WPSEO_Link_Column_Count {
12
 
13
  /**
14
+ * The link counts for each post id on the current page.
15
+ *
16
  * @var array
17
  */
18
  protected $count = array();
admin/links/class-link-columns.php CHANGED
@@ -25,6 +25,8 @@ class WPSEO_Link_Columns {
25
  const COLUMN_LINKS = 'links';
26
 
27
  /**
 
 
28
  * @var WPSEO_Link_Column_Count
29
  */
30
  protected $link_count;
@@ -214,7 +216,7 @@ class WPSEO_Link_Columns {
214
  public function set_count_objects() {
215
  global $wp_query;
216
 
217
- $posts = $wp_query->get_posts();
218
  $post_ids = array();
219
 
220
  // Post lists return a list of objects.
25
  const COLUMN_LINKS = 'links';
26
 
27
  /**
28
+ * Holds the link column count instance.
29
+ *
30
  * @var WPSEO_Link_Column_Count
31
  */
32
  protected $link_count;
216
  public function set_count_objects() {
217
  global $wp_query;
218
 
219
+ $posts = empty( $wp_query->posts ) ? $wp_query->get_posts() : $wp_query->posts;
220
  $post_ids = array();
221
 
222
  // Post lists return a list of objects.
admin/links/class-link-compatibility-notifier.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Compatibility_Notifier {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const NOTIFICATION_ID = 'wpseo-links-compatibility';
11
  class WPSEO_Link_Compatibility_Notifier {
12
 
13
  /**
14
+ * Notification id.
15
+ *
16
  * @var string
17
  */
18
  const NOTIFICATION_ID = 'wpseo-links-compatibility';
admin/links/class-link-content-processor.php CHANGED
@@ -12,11 +12,15 @@
12
  class WPSEO_Link_Content_Processor {
13
 
14
  /**
 
 
15
  * @var WPSEO_Link_Storage
16
  */
17
  protected $storage;
18
 
19
  /**
 
 
20
  * @var WPSEO_Meta_Storage
21
  */
22
  private $count_storage;
12
  class WPSEO_Link_Content_Processor {
13
 
14
  /**
15
+ * Holds the link storage instance.
16
+ *
17
  * @var WPSEO_Link_Storage
18
  */
19
  protected $storage;
20
 
21
  /**
22
+ * Holds the meta storage instance.
23
+ *
24
  * @var WPSEO_Meta_Storage
25
  */
26
  private $count_storage;
admin/links/class-link-extractor.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Extractor {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  protected $content;
11
  class WPSEO_Link_Extractor {
12
 
13
  /**
14
+ * The content to extract the links from.
15
+ *
16
  * @var string
17
  */
18
  protected $content;
admin/links/class-link-factory.php CHANGED
@@ -11,16 +11,22 @@
11
  class WPSEO_Link_Factory {
12
 
13
  /**
 
 
14
  * @var WPSEO_Link_Type_Classifier
15
  */
16
  protected $classifier;
17
 
18
  /**
 
 
19
  * @var WPSEO_Link_Internal_Lookup
20
  */
21
  protected $internal_lookup;
22
 
23
  /**
 
 
24
  * @var WPSEO_Link_Filter
25
  */
26
  protected $filter;
11
  class WPSEO_Link_Factory {
12
 
13
  /**
14
+ * Represents the classifier for a link. Determines of a link is an outbound or internal one.
15
+ *
16
  * @var WPSEO_Link_Type_Classifier
17
  */
18
  protected $classifier;
19
 
20
  /**
21
+ * Represents the internal link lookup. This class tries get the postid for a given internal link.
22
+ *
23
  * @var WPSEO_Link_Internal_Lookup
24
  */
25
  protected $internal_lookup;
26
 
27
  /**
28
+ * Represents the filter for filtering links.
29
+ *
30
  * @var WPSEO_Link_Filter
31
  */
32
  protected $filter;
admin/links/class-link-filter.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Filter {
12
 
13
  /**
 
 
14
  * @var string|null
15
  */
16
  protected $current_page_path;
11
  class WPSEO_Link_Filter {
12
 
13
  /**
14
+ * Path to the current page.
15
+ *
16
  * @var string|null
17
  */
18
  protected $current_page_path;
admin/links/class-link-installer.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Installer {
12
 
13
  /**
 
 
14
  * @var WPSEO_Installable[]
15
  */
16
  protected $installables = array();
11
  class WPSEO_Link_Installer {
12
 
13
  /**
14
+ * Installable objects.
15
+ *
16
  * @var WPSEO_Installable[]
17
  */
18
  protected $installables = array();
admin/links/class-link-notifier.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Notifier {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const NOTIFICATION_ID = 'wpseo-reindex-links';
11
  class WPSEO_Link_Notifier {
12
 
13
  /**
14
+ * The ID of the link indexing notification.
15
+ *
16
  * @var string
17
  */
18
  const NOTIFICATION_ID = 'wpseo-reindex-links';
admin/links/class-link-reindex-post-endpoint.php CHANGED
@@ -11,21 +11,29 @@
11
  class WPSEO_Link_Reindex_Post_Endpoint {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const REST_NAMESPACE = 'yoast/v1';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const ENDPOINT_QUERY = 'reindex_posts';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  const CAPABILITY_RETRIEVE = 'edit_posts';
27
 
28
  /**
 
 
29
  * @var WPSEO_Link_Reindex_Post_Service
30
  */
31
  protected $service;
11
  class WPSEO_Link_Reindex_Post_Endpoint {
12
 
13
  /**
14
+ * Holds the namespace of the rest route.
15
+ *
16
  * @var string
17
  */
18
  const REST_NAMESPACE = 'yoast/v1';
19
 
20
  /**
21
+ * Holds the route of the endpoint to reindex the posts.
22
+ *
23
  * @var string
24
  */
25
  const ENDPOINT_QUERY = 'reindex_posts';
26
 
27
  /**
28
+ * Holds the name of the capability needed to reindex the posts.
29
+ *
30
  * @var string
31
  */
32
  const CAPABILITY_RETRIEVE = 'edit_posts';
33
 
34
  /**
35
+ * Holds the link reindex post service instance.
36
+ *
37
  * @var WPSEO_Link_Reindex_Post_Service
38
  */
39
  protected $service;
admin/links/class-link-storage.php CHANGED
@@ -18,11 +18,15 @@ class WPSEO_Link_Storage implements WPSEO_Installable {
18
  const TABLE_NAME = 'yoast_seo_links';
19
 
20
  /**
 
 
21
  * @var WPSEO_Database_Proxy
22
  */
23
  protected $database_proxy;
24
 
25
  /**
 
 
26
  * @deprecated 7.4
27
  *
28
  * @var null|string
18
  const TABLE_NAME = 'yoast_seo_links';
19
 
20
  /**
21
+ * An instance of the database proxy class.
22
+ *
23
  * @var WPSEO_Database_Proxy
24
  */
25
  protected $database_proxy;
26
 
27
  /**
28
+ * Holds the prefix of the database table.
29
+ *
30
  * @deprecated 7.4
31
  *
32
  * @var null|string
admin/links/class-link-table-accessible-notifier.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Table_Accessible_Notifier {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const NOTIFICATION_ID = 'wpseo-links-table-not-accessible';
11
  class WPSEO_Link_Table_Accessible_Notifier {
12
 
13
  /**
14
+ * Notification id.
15
+ *
16
  * @var string
17
  */
18
  const NOTIFICATION_ID = 'wpseo-links-table-not-accessible';
admin/links/class-link-table-accessible.php CHANGED
@@ -11,11 +11,15 @@
11
  class WPSEO_Link_Table_Accessible {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const ACCESSIBLE = '0';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const INACCESSBILE = '1';
11
  class WPSEO_Link_Table_Accessible {
12
 
13
  /**
14
+ * Constant used to determine whether the link table is accessible.
15
+ *
16
  * @var string
17
  */
18
  const ACCESSIBLE = '0';
19
 
20
  /**
21
+ * Constant used to determine whether the link table is inaccessible.
22
+ *
23
  * @var string
24
  */
25
  const INACCESSBILE = '1';
admin/links/class-link-type-classifier.php CHANGED
@@ -11,11 +11,15 @@
11
  class WPSEO_Link_Type_Classifier {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  protected $base_host = '';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  protected $base_path = '';
11
  class WPSEO_Link_Type_Classifier {
12
 
13
  /**
14
+ * Host of the URL.
15
+ *
16
  * @var string
17
  */
18
  protected $base_host = '';
19
 
20
  /**
21
+ * Path of the URL.
22
+ *
23
  * @var string
24
  */
25
  protected $base_path = '';
admin/links/class-link-watcher.php CHANGED
@@ -11,6 +11,8 @@
11
  class WPSEO_Link_Watcher {
12
 
13
  /**
 
 
14
  * @var WPSEO_Link_Content_Processor
15
  */
16
  protected $content_processor;
11
  class WPSEO_Link_Watcher {
12
 
13
  /**
14
+ * Represents the content processor. It will extract links from the content and saves them for the given post id.
15
+ *
16
  * @var WPSEO_Link_Content_Processor
17
  */
18
  protected $content_processor;
admin/links/class-link.php CHANGED
@@ -11,26 +11,36 @@
11
  class WPSEO_Link {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  const TYPE_EXTERNAL = 'external';
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  const TYPE_INTERNAL = 'internal';
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  protected $url;
27
 
28
  /**
 
 
29
  * @var int
30
  */
31
  protected $target_post_id;
32
 
33
  /**
 
 
34
  * @var string
35
  */
36
  protected $type;
11
  class WPSEO_Link {
12
 
13
  /**
14
+ * Indicates that the link is external.
15
+ *
16
  * @var string
17
  */
18
  const TYPE_EXTERNAL = 'external';
19
 
20
  /**
21
+ * Indicates that the link is internal.
22
+ *
23
  * @var string
24
  */
25
  const TYPE_INTERNAL = 'internal';
26
 
27
  /**
28
+ * Holds the url.
29
+ *
30
  * @var string
31
  */
32
  protected $url;
33
 
34
  /**
35
+ * Holds the post ID of the target.
36
+ *
37
  * @var int
38
  */
39
  protected $target_post_id;
40
 
41
  /**
42
+ * Holds the link type.
43
+ *
44
  * @var string
45
  */
46
  protected $type;
admin/menu/class-replacevar-editor.php CHANGED
@@ -92,6 +92,8 @@ class WPSEO_Replacevar_Editor {
92
  }
93
 
94
  /**
 
 
95
  * @param array $arguments The arguments to validate.
96
  *
97
  * @throws InvalidArgumentException Thrown when not all required arguments are present.
92
  }
93
 
94
  /**
95
+ * Validates the replacement variable editor arguments.
96
+ *
97
  * @param array $arguments The arguments to validate.
98
  *
99
  * @throws InvalidArgumentException Thrown when not all required arguments are present.
admin/metabox/class-abstract-sectioned-metabox-tab.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPSEO plugin file.
4
+ *
5
+ * @package WPSEO\Admin
6
+ */
7
+
8
+ /**
9
+ * Base class for metabox that consist of multiple sections.
10
+ */
11
+ abstract class WPSEO_Abstract_Metabox_Tab_With_Sections implements WPSEO_Metabox_Section {
12
+
13
+ /**
14
+ * Holds the name of the tab.
15
+ *
16
+ * @var string
17
+ */
18
+ public $name;
19
+
20
+ /**
21
+ * Holds the HTML of the tab header.
22
+ *
23
+ * @var string
24
+ */
25
+ protected $link_content;
26
+
27
+ /**
28
+ * Holds the name of the tab header.
29
+ *
30
+ * @var string
31
+ */
32
+ protected $link_title;
33
+
34
+ /**
35
+ * Holds the classname of the tab header.
36
+ *
37
+ * @var string
38
+ */
39
+ protected $link_class;
40
+
41
+ /**
42
+ * Holds the aria label of the tab header.
43
+ *
44
+ * @var string
45
+ */
46
+ protected $link_aria_label;
47
+
48
+ /**
49
+ * Constructor.
50
+ *
51
+ * @param string $name The name of the section, used as an identifier in the html.
52
+ * Can only contain URL safe characters.
53
+ * @param string $link_content The text content of the section link.
54
+ * @param array $options Optional link attributes.
55
+ */
56
+ public function __construct( $name, $link_content, array $options = array() ) {
57
+ $default_options = array(
58
+ 'link_title' => '',
59
+ 'link_class' => '',
60
+ 'link_aria_label' => '',
61
+ );
62
+
63
+ $options = array_merge( $default_options, $options );
64
+
65
+ $this->name = $name;
66
+
67
+ $this->link_content = $link_content;
68
+ $this->link_title = $options['link_title'];
69
+ $this->link_class = $options['link_class'];
70
+ $this->link_aria_label = $options['link_aria_label'];
71
+ }
72
+
73
+ /**
74
+ * Outputs the section link if any section has been added.
75
+ */
76
+ public function display_link() {
77
+ if ( $this->has_sections() ) {
78
+ printf(
79
+ '<li role="presentation"><a role="tab" href="#wpseo-meta-section-%1$s" id="wpseo-meta-tab-%1$s" aria-controls="wpseo-meta-section-%1$s" class="wpseo-meta-section-link %2$s"%3$s%4$s>%5$s</a></li>',
80
+ esc_attr( $this->name ),
81
+ esc_attr( $this->link_class ),
82
+ ( '' !== $this->link_title ) ? ' title="' . esc_attr( $this->link_title ) . '"' : '',
83
+ ( '' !== $this->link_aria_label ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '',
84
+ $this->link_content
85
+ );
86
+ }
87
+ }
88
+
89
+ /**
90
+ * Checks whether the tab has any sections.
91
+ *
92
+ * @return bool Whether the tab has any sections
93
+ */
94
+ abstract protected function has_sections();
95
+ }
admin/metabox/class-metabox-addon-section.php CHANGED
@@ -33,7 +33,7 @@ class WPSEO_Metabox_Addon_Tab_Section extends WPSEO_Metabox_Tab_Section {
33
  *
34
  * @return bool
35
  */
36
- protected function has_tabs() {
37
  return true;
38
  }
39
  }
33
  *
34
  * @return bool
35
  */
36
+ protected function has_sections() {
37
  return true;
38
  }
39
  }
admin/metabox/class-metabox-collapsible.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPSEO plugin file.
4
+ *
5
+ * @package WPSEO\Admin
6
+ */
7
+
8
+ /**
9
+ * Generates the HTML for a metabox tab.
10
+ */
11
+ class WPSEO_Metabox_Collapsible implements WPSEO_Metabox_Tab {
12
+
13
+ /**
14
+ * The collapsible's unique identifier.
15
+ *
16
+ * @var string
17
+ */
18
+ private $name;
19
+
20
+ /**
21
+ * The content to be displayed inside the collapsible.
22
+ *
23
+ * @var string
24
+ */
25
+ private $content;
26
+
27
+ /**
28
+ * The label.
29
+ *
30
+ * @var string
31
+ */
32
+ private $link_content;
33
+
34
+ /**
35
+ * Constructor.
36
+ *
37
+ * @param string $name The name of the tab, used as an identifier in the html.
38
+ * @param string $content The tab content.
39
+ * @param string $link_content The text content of the tab link.
40
+ */
41
+ public function __construct( $name, $content, $link_content ) {
42
+ $this->name = $name;
43
+ $this->content = $content;
44
+ $this->link_content = $link_content;
45
+ }
46
+
47
+ /**
48
+ * Returns the html for the tab link.
49
+ *
50
+ * @return string
51
+ */
52
+ public function link() {
53
+ return $this->link_content;
54
+ }
55
+
56
+ /**
57
+ * Returns the html for the tab content.
58
+ *
59
+ * @return string
60
+ */
61
+ public function content() {
62
+ $collapsible_paper = new WPSEO_Paper_Presenter(
63
+ $this->link(),
64
+ null,
65
+ array(
66
+ 'content' => $this->content,
67
+ 'collapsible' => true,
68
+ 'class' => 'metabox wpseo-form wpseo-collapsible-container',
69
+ 'paper_id' => 'collapsible-' . $this->name,
70
+ )
71
+ );
72
+
73
+ return $collapsible_paper->get_output();
74
+ }
75
+
76
+ /**
77
+ * Returns the collapsible's unique identifier.
78
+ *
79
+ * @return string
80
+ */
81
+ public function get_name() {
82
+ return $this->name;
83
+ }
84
+ }
admin/metabox/class-metabox-collapsibles-section.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPSEO plugin file.
4
+ *
5
+ * @package WPSEO\Admin
6
+ */
7
+
8
+ /**
9
+ * Generates and displays a metabox tab that consists of collapsible sections.
10
+ */
11
+ class WPSEO_Metabox_Collapsibles_Sections extends WPSEO_Abstract_Metabox_Tab_With_Sections {
12
+
13
+ /**
14
+ * Holds the tab's collapsibles.
15
+ *
16
+ * @var WPSEO_Metabox_Collapsible[]
17
+ */
18
+ private $collapsibles = array();
19
+
20
+ /**
21
+ * Constructor.
22
+ *
23
+ * @param string $name The name of the section, used as an identifier in the html.
24
+ * Can only contain URL safe characters.
25
+ * @param string $link_content The text content of the section link.
26
+ * @param array $collapsibles The metabox collapsibles (`WPSEO_Metabox_Collapsible[]`) to be included in the section.
27
+ * @param array $options Optional link attributes.
28
+ */
29
+ public function __construct( $name, $link_content, array $collapsibles = array(), array $options = array() ) {
30
+ parent::__construct( $name, $link_content, $options );
31
+
32
+ $this->collapsibles = $collapsibles;
33
+ }
34
+
35
+ /**
36
+ * Outputs the section content if any tab has been added.
37
+ */
38
+ public function display_content() {
39
+ if ( $this->has_sections() ) {
40
+ printf( '<div id="%1$s" class="wpseo-meta-section">', esc_attr( 'wpseo-meta-section-' . $this->name ) );
41
+ echo '<div class="wpseo_content_wrapper">';
42
+
43
+ foreach ( $this->collapsibles as $collapsible ) {
44
+ echo $collapsible->content();
45
+ }
46
+
47
+ echo '</div></div>';
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Checks whether the tab has any sections.
53
+ *
54
+ * @return bool Whether the tab has any sections
55
+ */
56
+ protected function has_sections() {
57
+ return ! empty( $this->collapsibles );
58
+ }
59
+ }
admin/metabox/class-metabox-editor.php CHANGED
@@ -29,7 +29,6 @@ class WPSEO_Metabox_Editor {
29
  public function add_css_inside_editor( $css_files ) {
30
  $asset_manager = new WPSEO_Admin_Asset_Manager();
31
  $styles = $asset_manager->special_styles();
32
- /** @var WPSEO_Admin_Asset $inside_editor */
33
  $inside_editor = $styles['inside-editor'];
34
 
35
  $asset_location = new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE );
29
  public function add_css_inside_editor( $css_files ) {
30
  $asset_manager = new WPSEO_Admin_Asset_Manager();
31
  $styles = $asset_manager->special_styles();
 
32
  $inside_editor = $styles['inside-editor'];
33
 
34
  $asset_location = new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE );
admin/metabox/class-metabox-form-tab.php CHANGED
@@ -11,41 +11,57 @@
11
  class WPSEO_Metabox_Form_Tab implements WPSEO_Metabox_Tab {
12
 
13
  /**
 
 
14
  * @var string
15
  */
16
  private $name;
17
 
18
  /**
 
 
19
  * @var string
20
  */
21
  private $content;
22
 
23
  /**
 
 
24
  * @var string
25
  */
26
  private $link_content;
27
 
28
  /**
 
 
29
  * @var string
30
  */
31
  private $tab_class;
32
 
33
  /**
 
 
34
  * @var string
35
  */
36
  private $link_class;
37
 
38
  /**
 
 
39
  * @var string
40
  */
41
  private $link_title;
42
 
43
  /**
 
 
44
  * @var string
45
  */
46
  private $link_aria_label;
47
 
48
  /**
 
 
49
  * @var boolean
50
  */
51
  private $single;
11
  class WPSEO_Metabox_Form_Tab implements WPSEO_Metabox_Tab {
12
 
13
  /**
14
+ * The tab identifier.
15
+ *
16
  * @var string
17
  */
18
  private $name;
19
 
20
  /**
21
+ * The tab content.
22
+ *
23
  * @var string
24
  */
25
  private $content;
26
 
27
  /**
28
+ * The tab link content.
29
+ *
30
  * @var string
31
  */
32
  private $link_content;
33
 
34
  /**
35
+ * Additional tab content class.
36
+ *
37
  * @var string
38
  */
39
  private $tab_class;
40
 
41
  /**
42
+ * Additional tab link class.
43
+ *
44
  * @var string
45
  */
46
  private $link_class;
47
 
48
  /**
49
+ * Title attribute on the link span.
50
+ *
51
  * @var string
52
  */
53
  private $link_title;
54
 
55
  /**
56
+ * Arial label attribute on the link span.
57
+ *
58
  * @var string
59
  */
60
  private $link_aria_label;
61
 
62
  /**
63
+ * Does it contain a single tab.
64
+ *
65
  * @var boolean
66
  */
67
  private $single;
admin/metabox/class-metabox-section-react.php CHANGED
@@ -45,6 +45,13 @@ class WPSEO_Metabox_Section_React implements WPSEO_Metabox_Section {
45
  */
46
  private $link_aria_label;
47
 
 
 
 
 
 
 
 
48
  /**
49
  * Constructor.
50
  *
@@ -61,6 +68,7 @@ class WPSEO_Metabox_Section_React implements WPSEO_Metabox_Section {
61
  $default_options = array(
62
  'link_class' => '',
63
  'link_aria_label' => '',
 
64
  );
65
 
66
  $options = wp_parse_args( $options, $default_options );