Yoast SEO - Version 12.8

Version Description

Release Date: January 7th, 2020

Welcome to another year of helping you achieve your goals with your site! Today, its time for the first in a long line of releases planned for 2020: Yoast SEO 12.8. In this release, youll find a number of bug fixes and performance enhancements. Find out more about this release in our 12.8 release post!

Bugfixes:

  • Fixes a bug where clicking the notification center buttons would result in an incorrect icon and a misplaced focus style for the dismiss and restore buttons.
  • Fixes a bug where create and update actions would be done twice on multisite environments in combination with MultilingualPress.
  • Fixes a bug where an empty page title would cause the breadcrumbs schema to set a wrong url.
  • Fixes a bug where author archives for authors without post would show up in the search results, even though the "Show archives for authors without posts in search results?" option was enabled.
  • Fixes a bug where the styling was missing from admin error notices in WordPress 5.3.
  • Fixes a bug where the results of the images alt attribute SEO assessment in the Classic Editor were incorrect when the image did not have an alt attribute but did have a title attribute.

Enhancements:

  • Optimizes the options retrieval processes. Props to Alex Bouma for his testing and suggestions.
  • Adds the possibility to declare an identifier when integrating with the Schema output.

Other:

  • Fixes the documentation in the Schema HowTo file. Props to timvaniersel.
  • Fixes the documentation in the Breadcrumbs file. Props to alfiosalanitri.
  • Moves the paginated comments notice from the dashboard to WordPress' Site Health screen.
Download this release

Release Info

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

Code changes from version 12.7.1 to 12.8

Files changed (116) hide show
  1. admin/capabilities/class-capability-utils.php +35 -0
  2. admin/class-admin-asset-manager.php +32 -131
  3. admin/class-admin-init.php +27 -43
  4. admin/class-admin.php +6 -1
  5. admin/class-helpscout.php +8 -8
  6. admin/class-yoast-form.php +55 -73
  7. admin/class-yoast-notification-center.php +105 -26
  8. admin/class-yoast-notification.php +37 -2
  9. admin/config-ui/class-configuration-page.php +0 -1
  10. admin/import/class-import-settings.php +3 -0
  11. admin/links/class-link-watcher.php +5 -0
  12. admin/metabox/class-metabox.php +8 -4
  13. admin/statistics/class-statistics-integration.php +5 -0
  14. admin/taxonomy/class-taxonomy.php +1 -0
  15. admin/tracking/class-tracking-server-data.php +6 -6
  16. admin/views/licenses.php +8 -8
  17. admin/views/sidebar.php +7 -7
  18. admin/views/tabs/metas/paper-content/general/knowledge-graph.php +3 -2
  19. admin/views/tabs/social/pinterest.php +1 -1
  20. admin/views/tabs/social/twitterbox.php +1 -1
  21. css/dist/admin-global-1271-rtl.min.css +0 -1
  22. css/dist/admin-global-1271.min.css +0 -1
  23. css/dist/admin-global-1280-rtl.min.css +1 -0
  24. css/dist/admin-global-1280.min.css +1 -0
  25. css/dist/{adminbar-1271-rtl.min.css → adminbar-1280-rtl.min.css} +0 -0
  26. css/dist/{adminbar-1271.min.css → adminbar-1280.min.css} +0 -0
  27. css/dist/alerts-1271-rtl.min.css +0 -1
  28. css/dist/alerts-1271.min.css +0 -1
  29. css/dist/alerts-1280-rtl.min.css +1 -0
  30. css/dist/alerts-1280.min.css +1 -0
  31. css/dist/{dashboard-1271-rtl.min.css → dashboard-1280-rtl.min.css} +0 -0
  32. css/dist/{dashboard-1271.min.css → dashboard-1280.min.css} +0 -0
  33. css/dist/{edit-page-1271-rtl.min.css → edit-page-1280-rtl.min.css} +0 -0
  34. css/dist/{edit-page-1271.min.css → edit-page-1280.min.css} +0 -0
  35. css/dist/{featured-image-1271-rtl.min.css → featured-image-1280-rtl.min.css} +0 -0
  36. css/dist/{featured-image-1271.min.css → featured-image-1280.min.css} +0 -0
  37. css/dist/{filter-explanation-1271-rtl.min.css → filter-explanation-1280-rtl.min.css} +0 -0
  38. css/dist/{filter-explanation-1271.min.css → filter-explanation-1280.min.css} +0 -0
  39. css/dist/{inside-editor-1271-rtl.min.css → inside-editor-1280-rtl.min.css} +0 -0
  40. css/dist/{inside-editor-1271.min.css → inside-editor-1280.min.css} +0 -0
  41. css/dist/metabox-1271-rtl.min.css +0 -1
  42. css/dist/metabox-1271.min.css +0 -5
  43. css/dist/metabox-1280-rtl.min.css +1 -0
  44. css/dist/metabox-1280.min.css +5 -0
  45. css/dist/{metabox-primary-category-1271-rtl.min.css → metabox-primary-category-1280-rtl.min.css} +0 -0
  46. css/dist/{metabox-primary-category-1271.min.css → metabox-primary-category-1280.min.css} +0 -0
  47. css/dist/search-appearance-1271-rtl.min.css +0 -1
  48. css/dist/search-appearance-1271.min.css +0 -1
  49. css/dist/search-appearance-1280-rtl.min.css +1 -0
  50. css/dist/search-appearance-1280.min.css +1 -0
  51. css/dist/structured-data-blocks-1271-rtl.min.css +0 -1
  52. css/dist/structured-data-blocks-1271.min.css +0 -1
  53. css/dist/structured-data-blocks-1280-rtl.min.css +1 -0
  54. css/dist/structured-data-blocks-1280.min.css +1 -0
  55. css/dist/toggle-switch-1271-rtl.min.css +0 -1
  56. css/dist/toggle-switch-1271.min.css +0 -1
  57. css/dist/toggle-switch-1280-rtl.min.css +1 -0
  58. css/dist/toggle-switch-1280.min.css +1 -0
  59. css/dist/{wpseo-dismissible-1271-rtl.min.css → wpseo-dismissible-1280-rtl.min.css} +1 -1
  60. css/dist/{wpseo-dismissible-1271.min.css → wpseo-dismissible-1280.min.css} +1 -1
  61. css/dist/yoast-components-1271-rtl.min.css +0 -1
  62. css/dist/yoast-components-1271.min.css +0 -1
  63. css/dist/yoast-components-1280-rtl.min.css +1 -0
  64. css/dist/yoast-components-1280.min.css +1 -0
  65. css/dist/yoast-extensions-1271-rtl.min.css +0 -1
  66. css/dist/yoast-extensions-1271.min.css +0 -1
  67. css/dist/yoast-extensions-1280-rtl.min.css +1 -0
  68. css/dist/yoast-extensions-1280.min.css +1 -0
  69. css/dist/yst_plugin_tools-1271-rtl.min.css +0 -1
  70. css/dist/yst_plugin_tools-1271.min.css +0 -1
  71. css/dist/yst_plugin_tools-1280-rtl.min.css +1 -0
  72. css/dist/yst_plugin_tools-1280.min.css +1 -0
  73. css/dist/{yst_seo_score-1271-rtl.min.css → yst_seo_score-1280-rtl.min.css} +0 -0
  74. css/dist/{yst_seo_score-1271.min.css → yst_seo_score-1280.min.css} +0 -0
  75. deprecated/admin/class-metabox-tab-section.php +3 -3
  76. deprecated/admin/config-ui/components/class-component-connect-google-search-console.php +2 -2
  77. deprecated/admin/config-ui/fields/class-field-connect-google-search-console.php +1 -1
  78. deprecated/admin/google-search-console/class-gsc-category-filters.php +1 -1
  79. deprecated/admin/google-search-console/class-gsc-config.php +3 -3
  80. deprecated/admin/google-search-console/class-gsc-count.php +1 -1
  81. deprecated/admin/google-search-console/class-gsc-issue.php +1 -1
  82. deprecated/admin/google-search-console/class-gsc-issues.php +1 -1
  83. deprecated/admin/google-search-console/class-gsc-modal.php +1 -1
  84. deprecated/admin/google-search-console/class-gsc-service.php +3 -3
  85. deprecated/admin/google-search-console/class-gsc-settings.php +1 -1
  86. deprecated/admin/google-search-console/class-gsc-table.php +1 -1
  87. deprecated/class-metabox-addon-section.php +3 -3
  88. deprecated/class-recalibration-beta.php +7 -7
  89. deprecated/class-wpseo-option-internallinks.php +1 -1
  90. deprecated/class-wpseo-option-permalinks.php +1 -1
  91. deprecated/class-yoast-form-fieldset.php +8 -8
  92. deprecated/inc/sitemaps/class-sitemap-timezone.php +52 -0
  93. frontend/class-breadcrumbs.php +1 -1
  94. frontend/class-frontend.php +5 -4
  95. frontend/schema/class-schema-breadcrumb.php +1 -1
  96. frontend/schema/class-schema-context.php +2 -2
  97. frontend/schema/class-schema-howto.php +3 -3
  98. frontend/schema/class-schema.php +8 -5
  99. inc/class-rewrite.php +0 -1
  100. inc/class-upgrade.php +12 -0
  101. inc/class-wpseo-utils.php +4 -7
  102. inc/date-helper.php +37 -0
  103. inc/health-check-page-comments.php +54 -0
  104. inc/health-check.php +12 -14
  105. inc/options/class-wpseo-option-ms.php +3 -3
  106. inc/options/class-wpseo-option-social.php +1 -1
  107. inc/options/class-wpseo-option-titles.php +2 -2
  108. inc/options/class-wpseo-option.php +19 -18
  109. inc/options/class-wpseo-options.php +33 -12
  110. inc/sitemaps/class-author-sitemap-provider.php +21 -5
  111. inc/sitemaps/class-sitemap-timezone.php +0 -123
  112. inc/sitemaps/class-sitemaps-renderer.php +6 -6
  113. inc/sitemaps/class-sitemaps-router.php +0 -1
  114. inc/sitemaps/class-sitemaps.php +10 -11
  115. inc/wpseo-non-ajax-functions.php +1 -3
  116. js/dist/analysis-1271.min.js +0 -14
admin/capabilities/class-capability-utils.php CHANGED
@@ -25,6 +25,41 @@ class WPSEO_Capability_Utils {
25
  return self::has_any( [ 'wpseo_manage_options', $capability ] );
26
  }
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  /**
29
  * Checks if the current user has at least one of the supplied capabilities.
30
  *
25
  return self::has_any( [ 'wpseo_manage_options', $capability ] );
26
  }
27
 
28
+ /**
29
+ * Retrieves the users that have the specified capability.
30
+ *
31
+ * @param string $capability The name of the capability.
32
+ *
33
+ * @return array The users that have the capability.
34
+ */
35
+ public static function get_applicable_users( $capability ) {
36
+ $applicable_roles = self::get_applicable_roles( $capability );
37
+
38
+ return get_users( [ 'role__in' => $applicable_roles ] );
39
+ }
40
+
41
+ /**
42
+ * Retrieves the roles that have the specified capability.
43
+ *
44
+ * @param string $capability The name of the capability.
45
+ *
46
+ * @return array The names of the roles that have the capability.
47
+ */
48
+ public static function get_applicable_roles( $capability ) {
49
+ $roles = wp_roles();
50
+
51
+ $applicable_roles = [];
52
+ foreach ( $roles->get_names() as $role_name ) {
53
+ $role = $roles->get_role( $role_name );
54
+ // Add role if it has the capability.
55
+ if ( $role && in_array( $capability, $role['capabilities'], true ) ) {
56
+ $applicable_roles[] = $role['name'];
57
+ }
58
+ }
59
+
60
+ return $applicable_roles;
61
+ }
62
+
63
  /**
64
  * Checks if the current user has at least one of the supplied capabilities.
65
  *
admin/class-admin-asset-manager.php CHANGED
@@ -176,137 +176,6 @@ class WPSEO_Admin_Asset_Manager {
176
  return new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE );
177
  }
178
 
179
- /**
180
- * Registers the WordPress dependencies that exist in 5.0 in case they are not present.
181
- *
182
- * This function can be removed when WordPress 5.1 has been released, because from 5.0 wp-elements will be
183
- * registered earlier, which means we don't have to reregister things.
184
- *
185
- * @return void
186
- */
187
- public function register_wp_assets() {
188
-
189
- global $wp_scripts;
190
-
191
- $script = $wp_scripts->query( 'react' );
192
-
193
- // IE11 needs wp-polyfill to be registered before react.
194
- if ( $script && ! in_array( 'wp-polyfill', $script->deps, true ) ) {
195
- $script->deps[] = 'wp-polyfill';
196
- }
197
-
198
- $flat_version = $this->flatten_version( WPSEO_VERSION );
199
-
200
- wp_register_script(
201
- 'react',
202
- plugins_url( 'js/vendor/react.min.js', WPSEO_FILE ),
203
- [],
204
- 'v16.6.1',
205
- true
206
- );
207
-
208
- wp_register_script(
209
- 'react-dom',
210
- plugins_url( 'js/vendor/react-dom.min.js', WPSEO_FILE ),
211
- [ 'react' ],
212
- 'v16.6.1',
213
- true
214
- );
215
-
216
- wp_register_script(
217
- 'lodash-base',
218
- plugins_url( 'js/vendor/lodash.min.js', WPSEO_FILE ),
219
- [],
220
- '4.17.5',
221
- true
222
- );
223
-
224
- wp_register_script(
225
- 'lodash',
226
- plugins_url( 'js/vendor/lodash-noconflict.js', WPSEO_FILE ),
227
- [ 'lodash-base' ],
228
- WPSEO_VERSION,
229
- true
230
- );
231
-
232
- wp_register_script(
233
- 'wp-polyfill',
234
- plugins_url( 'js/dist/babel-polyfill-' . $flat_version . '.min.js', WPSEO_FILE ),
235
- [],
236
- WPSEO_VERSION,
237
- true
238
- );
239
-
240
- wp_register_script(
241
- 'wp-element',
242
- plugins_url( 'js/dist/wp-element-' . $flat_version . '.min.js', WPSEO_FILE ),
243
- [ 'lodash', 'wp-polyfill', 'react', 'react-dom' ],
244
- WPSEO_VERSION,
245
- true
246
- );
247
-
248
- wp_register_script(
249
- 'wp-api-fetch',
250
- plugins_url( 'js/dist/wp-apiFetch-' . $flat_version . '.min.js', WPSEO_FILE ),
251
- [ 'wp-i18n', 'wp-polyfill' ],
252
- WPSEO_VERSION,
253
- true
254
- );
255
-
256
- wp_register_script(
257
- 'wp-components',
258
- plugins_url( 'js/dist/wp-components-' . $flat_version . '.min.js', WPSEO_FILE ),
259
- [ 'lodash', 'wp-api-fetch', 'wp-i18n', 'wp-polyfill', 'wp-compose' ],
260
- WPSEO_VERSION,
261
- true
262
- );
263
-
264
- wp_register_script(
265
- 'wp-data',
266
- plugins_url( 'js/dist/wp-data-' . $flat_version . '.min.js', WPSEO_FILE ),
267
- [ 'lodash', 'wp-element', 'wp-polyfill', 'wp-compose' ],
268
- WPSEO_VERSION,
269
- true
270
- );
271
-
272
- wp_register_script(
273
- 'wp-i18n',
274
- plugins_url( 'js/dist/wp-i18n-' . $flat_version . '.min.js', WPSEO_FILE ),
275
- [ 'wp-polyfill' ],
276
- WPSEO_VERSION,
277
- true
278
- );
279
-
280
- wp_register_script(
281
- 'wp-rich-text',
282
- plugins_url( 'js/dist/wp-rich-text-' . $flat_version . '.min.js', WPSEO_FILE ),
283
- [ 'lodash', 'wp-polyfill', 'wp-data' ],
284
- WPSEO_VERSION,
285
- true
286
- );
287
-
288
- wp_register_script(
289
- 'wp-compose',
290
- plugins_url( 'js/dist/wp-compose-' . $flat_version . '.min.js', WPSEO_FILE ),
291
- [ 'lodash', 'wp-polyfill' ],
292
- WPSEO_VERSION,
293
- true
294
- );
295
-
296
- /*
297
- * wp-annotations only exists from Gutenberg 4.3 and onwards, so we register a no-op in earlier versions.
298
- * The no-op achieves that our scripts that depend on this are actually loaded. Because WordPress doesn't
299
- * load a script if any of the dependencies are missing.
300
- *
301
- * @phpcs:disable WordPress.WP.EnqueuedResourceParameters -- The no-op does not require these settings.
302
- */
303
- wp_register_script(
304
- 'wp-annotations',
305
- null
306
- );
307
- // phpcs:enable -- End of disable.
308
- }
309
-
310
  /**
311
  * Returns the scripts that need to be registered.
312
  *
@@ -335,6 +204,7 @@ class WPSEO_Admin_Asset_Manager {
335
  'src' => 'commons-' . $flat_version,
336
  'in_footer' => false,
337
  'deps' => [
 
338
  'wp-polyfill',
339
  ],
340
  ],
@@ -452,6 +322,8 @@ class WPSEO_Admin_Asset_Manager {
452
  'wp-api-fetch',
453
  'wp-annotations',
454
  'wp-compose',
 
 
455
  self::PREFIX . 'replacevar-plugin',
456
  self::PREFIX . 'shortcode-plugin',
457
  self::PREFIX . 'analysis',
@@ -469,6 +341,8 @@ class WPSEO_Admin_Asset_Manager {
469
  'wp-data',
470
  'wp-api-fetch',
471
  'wp-compose',
 
 
472
  self::PREFIX . 'replacevar-plugin',
473
  self::PREFIX . 'analysis',
474
  self::PREFIX . 'components',
@@ -499,6 +373,7 @@ class WPSEO_Admin_Asset_Manager {
499
  'jquery',
500
  'jquery-ui-core',
501
  'jquery-ui-progressbar',
 
502
  self::PREFIX . 'analysis',
503
  self::PREFIX . 'commons',
504
  ],
@@ -508,11 +383,13 @@ class WPSEO_Admin_Asset_Manager {
508
  'src' => 'wp-seo-metabox-category-' . $flat_version,
509
  'deps' => [
510
  'jquery',
 
511
  'wp-util',
512
  'wp-element',
513
  'wp-i18n',
514
  'wp-components',
515
  'wp-data',
 
516
  self::PREFIX . 'analysis',
517
  self::PREFIX . 'components',
518
  self::PREFIX . 'commons',
@@ -617,6 +494,8 @@ class WPSEO_Admin_Asset_Manager {
617
  'name' => 'components',
618
  'src' => 'components-' . $flat_version,
619
  'deps' => [
 
 
620
  self::PREFIX . 'analysis',
621
  self::PREFIX . 'styled-components',
622
  self::PREFIX . 'commons',
@@ -629,6 +508,7 @@ class WPSEO_Admin_Asset_Manager {
629
  'wp-blocks',
630
  'wp-i18n',
631
  'wp-element',
 
632
  self::PREFIX . 'styled-components',
633
  self::PREFIX . 'commons',
634
  ],
@@ -640,6 +520,14 @@ class WPSEO_Admin_Asset_Manager {
640
  'wp-element',
641
  ],
642
  ],
 
 
 
 
 
 
 
 
643
  [
644
  'name' => 'help-scout-beacon',
645
  'src' => 'help-scout-beacon-' . $flat_version,
@@ -767,4 +655,17 @@ class WPSEO_Admin_Asset_Manager {
767
 
768
  return $this->asset_location->get_url( $asset, $type );
769
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
770
  }
176
  return new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE );
177
  }
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  /**
180
  * Returns the scripts that need to be registered.
181
  *
204
  'src' => 'commons-' . $flat_version,
205
  'in_footer' => false,
206
  'deps' => [
207
+ 'lodash',
208
  'wp-polyfill',
209
  ],
210
  ],
322
  'wp-api-fetch',
323
  'wp-annotations',
324
  'wp-compose',
325
+ 'wp-is-shallow-equal',
326
+ self::PREFIX . 'redux',
327
  self::PREFIX . 'replacevar-plugin',
328
  self::PREFIX . 'shortcode-plugin',
329
  self::PREFIX . 'analysis',
341
  'wp-data',
342
  'wp-api-fetch',
343
  'wp-compose',
344
+ 'wp-is-shallow-equal',
345
+ self::PREFIX . 'redux',
346
  self::PREFIX . 'replacevar-plugin',
347
  self::PREFIX . 'analysis',
348
  self::PREFIX . 'components',
373
  'jquery',
374
  'jquery-ui-core',
375
  'jquery-ui-progressbar',
376
+ self::PREFIX . 'jed',
377
  self::PREFIX . 'analysis',
378
  self::PREFIX . 'commons',
379
  ],
383
  'src' => 'wp-seo-metabox-category-' . $flat_version,
384
  'deps' => [
385
  'jquery',
386
+ 'wp-url',
387
  'wp-util',
388
  'wp-element',
389
  'wp-i18n',
390
  'wp-components',
391
  'wp-data',
392
+ 'wp-url',
393
  self::PREFIX . 'analysis',
394
  self::PREFIX . 'components',
395
  self::PREFIX . 'commons',
494
  'name' => 'components',
495
  'src' => 'components-' . $flat_version,
496
  'deps' => [
497
+ self::PREFIX . 'jed',
498
+ self::PREFIX . 'redux',
499
  self::PREFIX . 'analysis',
500
  self::PREFIX . 'styled-components',
501
  self::PREFIX . 'commons',
508
  'wp-blocks',
509
  'wp-i18n',
510
  'wp-element',
511
+ 'wp-is-shallow-equal',
512
  self::PREFIX . 'styled-components',
513
  self::PREFIX . 'commons',
514
  ],
520
  'wp-element',
521
  ],
522
  ],
523
+ [
524
+ 'name' => 'redux',
525
+ 'src' => 'redux-' . $flat_version,
526
+ ],
527
+ [
528
+ 'name' => 'jed',
529
+ 'src' => 'jed-' . $flat_version,
530
+ ],
531
  [
532
  'name' => 'help-scout-beacon',
533
  'src' => 'help-scout-beacon-' . $flat_version,
655
 
656
  return $this->asset_location->get_url( $asset, $type );
657
  }
658
+
659
+ /* ********************* DEPRECATED METHODS ********************* */
660
+
661
+ /**
662
+ * This function is needed for backwards compatibility with Local SEO 12.5.
663
+ *
664
+ * @deprecated 12.8
665
+ * @codeCoverageIgnore
666
+ *
667
+ * @return void
668
+ */
669
+ public function register_wp_assets() {
670
+ }
671
  }
admin/class-admin-init.php CHANGED
@@ -38,7 +38,6 @@ class WPSEO_Admin_Init {
38
  add_action( 'admin_init', [ $this, 'tagline_notice' ], 15 );
39
  add_action( 'admin_init', [ $this, 'blog_public_notice' ], 15 );
40
  add_action( 'admin_init', [ $this, 'permalink_notice' ], 15 );
41
- add_action( 'admin_init', [ $this, 'page_comments_notice' ], 15 );
42
  add_action( 'admin_init', [ $this, 'yoast_plugin_suggestions_notification' ], 15 );
43
  add_action( 'admin_init', [ $this, 'recalculate_notice' ], 15 );
44
  add_action( 'admin_init', [ $this, 'unsupported_php_notice' ], 15 );
@@ -47,7 +46,9 @@ class WPSEO_Admin_Init {
47
  add_action( 'admin_init', [ 'WPSEO_Plugin_Conflict', 'hook_check_for_plugin_conflicts' ] );
48
  add_action( 'admin_init', [ $this, 'handle_notifications' ], 15 );
49
  add_action( 'admin_notices', [ $this, 'permalink_settings_notice' ] );
50
- add_action( 'admin_enqueue_scripts', [ $this->asset_manager, 'register_wp_assets' ], PHP_INT_MAX );
 
 
51
 
52
  $listeners = [];
53
  $listeners[] = new WPSEO_Post_Type_Archive_Notification_Handler();
@@ -155,38 +156,6 @@ class WPSEO_Admin_Init {
155
  }
156
  }
157
 
158
- /**
159
- * Display notice to disable comment pagination.
160
- */
161
- public function page_comments_notice() {
162
-
163
- $info_message = __( 'Paging comments is enabled, this is not needed in 999 out of 1000 cases, we recommend to disable it.', 'wordpress-seo' );
164
- $info_message .= '<br/>';
165
-
166
- $info_message .= sprintf(
167
- /* translators: %1$s resolves to the opening tag of the link to the comment setting page, %2$s resolves to the closing tag of the link */
168
- __( 'To fix this uncheck the box in front of the "Break comments into pages..." on the %1$sComment settings page%2$s.', 'wordpress-seo' ),
169
- '<a href="' . esc_url( admin_url( 'options-discussion.php' ) ) . '">',
170
- '</a>'
171
- );
172
-
173
- $notification_options = [
174
- 'type' => Yoast_Notification::WARNING,
175
- 'id' => 'wpseo-dismiss-page_comments-notice',
176
- 'capabilities' => 'wpseo_manage_options',
177
- ];
178
-
179
- $tagline_notification = new Yoast_Notification( $info_message, $notification_options );
180
-
181
- $notification_center = Yoast_Notification_Center::get();
182
- if ( $this->has_page_comments() ) {
183
- $notification_center->add_notification( $tagline_notification );
184
- }
185
- else {
186
- $notification_center->remove_notification( $tagline_notification );
187
- }
188
- }
189
-
190
  /**
191
  * Returns whether or not the site has the default tagline.
192
  *
@@ -235,15 +204,6 @@ class WPSEO_Admin_Init {
235
  }
236
  }
237
 
238
- /**
239
- * Are page comments enabled.
240
- *
241
- * @return bool
242
- */
243
- public function has_page_comments() {
244
- return '1' === get_option( 'page_comments' );
245
- }
246
-
247
  /**
248
  * Shows a notice to the user if they have Google Analytics for WordPress 5.4.3 installed because it causes an error
249
  * on the google search console page.
@@ -637,4 +597,28 @@ class WPSEO_Admin_Init {
637
  public function wordpress_upgrade_notice() {
638
  _deprecated_function( __METHOD__, 'WPSEO 12.5' );
639
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
640
  }
38
  add_action( 'admin_init', [ $this, 'tagline_notice' ], 15 );
39
  add_action( 'admin_init', [ $this, 'blog_public_notice' ], 15 );
40
  add_action( 'admin_init', [ $this, 'permalink_notice' ], 15 );
 
41
  add_action( 'admin_init', [ $this, 'yoast_plugin_suggestions_notification' ], 15 );
42
  add_action( 'admin_init', [ $this, 'recalculate_notice' ], 15 );
43
  add_action( 'admin_init', [ $this, 'unsupported_php_notice' ], 15 );
46
  add_action( 'admin_init', [ 'WPSEO_Plugin_Conflict', 'hook_check_for_plugin_conflicts' ] );
47
  add_action( 'admin_init', [ $this, 'handle_notifications' ], 15 );
48
  add_action( 'admin_notices', [ $this, 'permalink_settings_notice' ] );
49
+
50
+ $page_comments = new WPSEO_Health_Check_Page_Comments();
51
+ $page_comments->register_test();
52
 
53
  $listeners = [];
54
  $listeners[] = new WPSEO_Post_Type_Archive_Notification_Handler();
156
  }
157
  }
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  /**
160
  * Returns whether or not the site has the default tagline.
161
  *
204
  }
205
  }
206
 
 
 
 
 
 
 
 
 
 
207
  /**
208
  * Shows a notice to the user if they have Google Analytics for WordPress 5.4.3 installed because it causes an error
209
  * on the google search console page.
597
  public function wordpress_upgrade_notice() {
598
  _deprecated_function( __METHOD__, 'WPSEO 12.5' );
599
  }
600
+
601
+ /**
602
+ * Display notice to disable comment pagination.
603
+ *
604
+ * @deprecated 12.8
605
+ * @codeCoverageIgnore
606
+ */
607
+ public function page_comments_notice() {
608
+ _deprecated_function( __METHOD__, 'WPSEO 12.8' );
609
+ }
610
+
611
+ /**
612
+ * Are page comments enabled.
613
+ *
614
+ * @deprecated 12.8
615
+ * @codeCoverageIgnore
616
+ *
617
+ * @return bool
618
+ */
619
+ public function has_page_comments() {
620
+ _deprecated_function( __METHOD__, 'WPSEO 12.8' );
621
+
622
+ return '1' === get_option( 'page_comments' );
623
+ }
624
  }
admin/class-admin.php CHANGED
@@ -130,6 +130,11 @@ class WPSEO_Admin {
130
  * Schedules a rewrite flush to happen at shutdown.
131
  */
132
  public function schedule_rewrite_flush() {
 
 
 
 
 
133
  add_action( 'shutdown', 'flush_rewrite_rules' );
134
  }
135
 
@@ -303,8 +308,8 @@ class WPSEO_Admin {
303
  */
304
  private function localize_admin_global_script() {
305
  return [
306
- /* translators: %1$s: '%%term_title%%' variable used in titles and meta's template that's not compatible with the given template, %2$s: expands to 'HelpScout beacon' */
307
  'variable_warning' => sprintf(
 
308
  __( 'Warning: the variable %1$s cannot be used in this template. See the %2$s for more info.', 'wordpress-seo' ),
309
  '<code>%s</code>',
310
  'HelpScout beacon'
130
  * Schedules a rewrite flush to happen at shutdown.
131
  */
132
  public function schedule_rewrite_flush() {
133
+ // Bail if this is a multisite installation and the site has been switched.
134
+ if ( is_multisite() && ms_is_switched() ) {
135
+ return;
136
+ }
137
+
138
  add_action( 'shutdown', 'flush_rewrite_rules' );
139
  }
140
 
308
  */
309
  private function localize_admin_global_script() {
310
  return [
 
311
  'variable_warning' => sprintf(
312
+ /* translators: %1$s: '%%term_title%%' variable used in titles and meta's template that's not compatible with the given template, %2$s: expands to 'HelpScout beacon' */
313
  __( 'Warning: the variable %1$s cannot be used in this template. See the %2$s for more info.', 'wordpress-seo' ),
314
  '<code>%s</code>',
315
  'HelpScout beacon'
admin/class-helpscout.php CHANGED
@@ -81,7 +81,7 @@ class WPSEO_HelpScout implements WPSEO_WordPress_Integration {
81
  '<script type="text/javascript">window.%1$s(\'%2$s\', %3$s)</script>',
82
  ( $this->ask_consent ) ? 'wpseoHelpScoutBeaconConsent' : 'wpseoHelpScoutBeacon',
83
  esc_html( $this->beacon_id ),
84
- wp_json_encode( $this->get_session_data() )
85
  );
86
  }
87
 
@@ -117,11 +117,11 @@ class WPSEO_HelpScout implements WPSEO_WordPress_Integration {
117
  $current_user = wp_get_current_user();
118
 
119
  $data = [
120
- 'name' => trim( $current_user->user_firstname . ' ' . $current_user->user_lastname ),
121
- 'email' => $current_user->user_email,
122
- 'WordPress Version' => $this->get_wordpress_version(),
123
- 'Server' => $this->get_server_info(),
124
- '<a href="' . admin_url( 'themes.php' ) . '">Theme</a>' => $this->get_theme_info(),
125
  '<a href="' . admin_url( 'plugins.php' ) . '">Plugins</a>' => $this->get_active_plugins(),
126
  ];
127
 
@@ -138,7 +138,7 @@ class WPSEO_HelpScout implements WPSEO_WordPress_Integration {
138
  }
139
  }
140
 
141
- return wp_json_encode( $data );
142
  }
143
 
144
  /**
@@ -186,7 +186,7 @@ class WPSEO_HelpScout implements WPSEO_WordPress_Integration {
186
  return '';
187
  }
188
 
189
- $product_info = '<table>';
190
  $product_info .= '<tr><td>Version</td><td>' . $plugin->product->version . '</td></tr>';
191
  $product_info .= '<tr><td>Expiration date</td><td>' . $plugin->expiry_date . '</td></tr>';
192
  $product_info .= '</table>';
81
  '<script type="text/javascript">window.%1$s(\'%2$s\', %3$s)</script>',
82
  ( $this->ask_consent ) ? 'wpseoHelpScoutBeaconConsent' : 'wpseoHelpScoutBeacon',
83
  esc_html( $this->beacon_id ),
84
+ WPSEO_Utils::format_json_encode( $this->get_session_data() )
85
  );
86
  }
87
 
117
  $current_user = wp_get_current_user();
118
 
119
  $data = [
120
+ 'name' => trim( $current_user->user_firstname . ' ' . $current_user->user_lastname ),
121
+ 'email' => $current_user->user_email,
122
+ 'WordPress Version' => $this->get_wordpress_version(),
123
+ 'Server' => $this->get_server_info(),
124
+ '<a href="' . admin_url( 'themes.php' ) . '">Theme</a>' => $this->get_theme_info(),
125
  '<a href="' . admin_url( 'plugins.php' ) . '">Plugins</a>' => $this->get_active_plugins(),
126
  ];
127
 
138
  }
139
  }
140
 
141
+ return WPSEO_Utils::format_json_encode( $data );
142
  }
143
 
144
  /**
186
  return '';
187
  }
188
 
189
+ $product_info = '<table>';
190
  $product_info .= '<tr><td>Version</td><td>' . $plugin->product->version . '</td></tr>';
191
  $product_info .= '<tr><td>Expiration date</td><td>' . $plugin->expiry_date . '</td></tr>';
192
  $product_info .= '</table>';
admin/class-yoast-form.php CHANGED
@@ -28,14 +28,6 @@ class Yoast_Form {
28
  */
29
  public $option_name;
30
 
31
- /**
32
- * Option values for the WPSEO_Options.
33
- *
34
- * @var array
35
- * @since 2.0
36
- */
37
- public $options = [];
38
-
39
  /**
40
  * Option instance.
41
  *
@@ -117,32 +109,12 @@ class Yoast_Form {
117
  public function set_option( $option_name ) {
118
  $this->option_name = $option_name;
119
 
120
- $this->options = WPSEO_Options::get_option( $option_name );
121
- if ( $this->options === null ) {
122
- $this->options = (array) get_option( $option_name, [] );
123
- }
124
-
125
  $this->option_instance = WPSEO_Options::get_option_instance( $option_name );
126
  if ( ! $this->option_instance ) {
127
  $this->option_instance = null;
128
  }
129
  }
130
 
131
- /**
132
- * Sets a value in the options.
133
- *
134
- * @since 5.4
135
- *
136
- * @param string $key The key of the option to set.
137
- * @param mixed $value The value to set the option to.
138
- * @param bool $overwrite Whether to overwrite existing options. Default is false.
139
- */
140
- public function set_options_value( $key, $value, $overwrite = false ) {
141
- if ( $overwrite || ! array_key_exists( $key, $this->options ) ) {
142
- $this->options[ $key ] = $value;
143
- }
144
- }
145
-
146
  /**
147
  * Generates the footer for admin pages.
148
  *
@@ -269,12 +241,10 @@ class Yoast_Form {
269
  * @param bool $label_left Whether the label should be left (true) or right (false).
270
  */
271
  public function checkbox( $var, $label, $label_left = false ) {
272
- if ( ! isset( $this->options[ $var ] ) ) {
273
- $this->options[ $var ] = false;
274
- }
275
 
276
- if ( $this->options[ $var ] === true ) {
277
- $this->options[ $var ] = 'on';
278
  }
279
 
280
  $class = '';
@@ -285,7 +255,7 @@ class Yoast_Form {
285
  $class = 'double';
286
  }
287
 
288
- echo '<input class="checkbox ', esc_attr( $class ), '" type="checkbox" id="', esc_attr( $var ), '" name="', esc_attr( $this->option_name ), '[', esc_attr( $var ), ']" value="on"', checked( $this->options[ $var ], 'on', false ), disabled( $this->is_control_disabled( $var ), true, false ), '/>';
289
 
290
  if ( ! empty( $label ) ) {
291
  $this->label( $label, [ 'for' => $var ] );
@@ -294,6 +264,35 @@ class Yoast_Form {
294
  echo '<br class="clear" />';
295
  }
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  /**
298
  * Create a light switch input field using a single checkbox.
299
  *
@@ -307,13 +306,10 @@ class Yoast_Form {
307
  * @param bool $strong Whether the visual label is displayed in strong text. Default is false.
308
  */
309
  public function light_switch( $var, $label, $buttons = [], $reverse = true, $help = '', $strong = false ) {
 
310
 
311
- if ( ! isset( $this->options[ $var ] ) ) {
312
- $this->options[ $var ] = false;
313
- }
314
-
315
- if ( $this->options[ $var ] === true ) {
316
- $this->options[ $var ] = 'on';
317
  }
318
 
319
  $class = 'switch-light switch-candy switch-yoast-seo';
@@ -328,9 +324,6 @@ class Yoast_Form {
328
 
329
  list( $off_button, $on_button ) = $buttons;
330
 
331
- $help_class = '';
332
- $screen_reader_text_class = '';
333
-
334
  $help_class = ! empty( $help ) ? ' switch-container__has-help' : '';
335
 
336
  $strong_class = ( $strong ) ? ' switch-light-visual-label__strong' : '';
@@ -338,7 +331,7 @@ class Yoast_Form {
338
  echo '<div class="switch-container', $help_class, '">',
339
  '<span class="switch-light-visual-label' . $strong_class . '" id="', esc_attr( $var . '-label' ), '">', esc_html( $label ), '</span>' . $help,
340
  '<label class="', $class, '"><b class="switch-yoast-seo-jaws-a11y">&nbsp;</b>',
341
- '<input type="checkbox" aria-labelledby="', esc_attr( $var . '-label' ), '" id="', esc_attr( $var ), '" name="', esc_attr( $this->option_name ), '[', esc_attr( $var ), ']" value="on"', checked( $this->options[ $var ], 'on', false ), disabled( $this->is_control_disabled( $var ), true, false ), '/>',
342
  '<span aria-hidden="true">
343
  <span>', esc_html( $off_button ) ,'</span>
344
  <span>', esc_html( $on_button ) ,'</span>
@@ -370,7 +363,7 @@ class Yoast_Form {
370
  'class' => '',
371
  ];
372
  $attr = wp_parse_args( $attr, $defaults );
373
- $val = isset( $this->options[ $var ] ) ? $this->options[ $var ] : '';
374
  $attributes = isset( $attr['autocomplete'] ) ? ' autocomplete="' . esc_attr( $attr['autocomplete'] ) . '"' : '';
375
  if ( isset( $attr['disabled'] ) && $attr['disabled'] ) {
376
  $attributes .= ' disabled';
@@ -416,7 +409,7 @@ class Yoast_Form {
416
  'class' => '',
417
  ];
418
  $attr = wp_parse_args( $attr, $defaults );
419
- $val = ( isset( $this->options[ $var ] ) ) ? $this->options[ $var ] : '';
420
 
421
  $this->label(
422
  $label,
@@ -437,7 +430,7 @@ class Yoast_Form {
437
  * @param string $id The ID of the element.
438
  */
439
  public function hidden( $var, $id = '' ) {
440
- $val = ( isset( $this->options[ $var ] ) ) ? $this->options[ $var ] : '';
441
  if ( is_bool( $val ) ) {
442
  $val = ( $val === true ) ? 'true' : 'false';
443
  }
@@ -478,7 +471,7 @@ class Yoast_Form {
478
  }
479
 
480
  $select_name = esc_attr( $this->option_name ) . '[' . esc_attr( $var ) . ']';
481
- $active_option = ( isset( $this->options[ $var ] ) ) ? $this->options[ $var ] : '';
482
  $wrapper_start_tag = '';
483
  $wrapper_end_tag = '';
484
 
@@ -511,9 +504,9 @@ class Yoast_Form {
511
  * @param string $label The label to show for the variable.
512
  */
513
  public function file_upload( $var, $label ) {
514
- $val = '';
515
- if ( isset( $this->options[ $var ] ) && is_array( $this->options[ $var ] ) ) {
516
- $val = $this->options[ $var ]['url'];
517
  }
518
 
519
  $var_esc = esc_attr( $var );
@@ -527,7 +520,7 @@ class Yoast_Form {
527
  echo '<input type="file" value="' . esc_attr( $val ) . '" class="textinput" name="' . esc_attr( $this->option_name ) . '[' . $var_esc . ']" id="' . $var_esc . '"', disabled( $this->is_control_disabled( $var ), true, false ), '/>';
528
 
529
  // Need to save separate array items in hidden inputs, because empty file inputs type will be deleted by settings API.
530
- if ( ! empty( $this->options[ $var ] ) ) {
531
  $this->hidden( 'file', $this->option_name . '_file' );
532
  $this->hidden( 'url', $this->option_name . '_url' );
533
  $this->hidden( 'type', $this->option_name . '_type' );
@@ -544,15 +537,8 @@ class Yoast_Form {
544
  * @param string $label Label message.
545
  */
546
  public function media_input( $var, $label ) {
547
- $val = '';
548
- if ( isset( $this->options[ $var ] ) ) {
549
- $val = $this->options[ $var ];
550
- }
551
-
552
- $id_value = '';
553
- if ( isset( $this->options[ $var . '_id' ] ) ) {
554
- $id_value = $this->options[ $var . '_id' ];
555
- }
556
 
557
  $var_esc = esc_attr( $var );
558
 
@@ -613,9 +599,7 @@ class Yoast_Form {
613
  if ( ! is_array( $values ) || $values === [] ) {
614
  return;
615
  }
616
- if ( ! isset( $this->options[ $var ] ) ) {
617
- $this->options[ $var ] = false;
618
- }
619
 
620
  $var_esc = esc_attr( $var );
621
 
@@ -643,7 +627,7 @@ class Yoast_Form {
643
  }
644
 
645
  $key_esc = esc_attr( $key );
646
- echo '<input type="radio" class="radio" id="' . $var_esc . '-' . $key_esc . '" name="' . esc_attr( $this->option_name ) . '[' . $var_esc . ']" value="' . $key_esc . '" ' . checked( $this->options[ $var ], $key_esc, false ) . disabled( $this->is_control_disabled( $var ), true, false ) . ' />';
647
  $this->label(
648
  $label,
649
  [
@@ -672,14 +656,12 @@ class Yoast_Form {
672
  if ( ! is_array( $values ) || $values === [] ) {
673
  return;
674
  }
675
- if ( ! isset( $this->options[ $var ] ) ) {
676
- $this->options[ $var ] = false;
677
- }
678
- if ( $this->options[ $var ] === true ) {
679
- $this->options[ $var ] = 'on';
680
  }
681
- if ( $this->options[ $var ] === false ) {
682
- $this->options[ $var ] = 'off';
683
  }
684
 
685
  $help_class = ! empty( $help ) ? ' switch-container__has-help' : '';
@@ -703,7 +685,7 @@ class Yoast_Form {
703
 
704
  $key_esc = esc_attr( $key );
705
  $for = $var_esc . '-' . $key_esc;
706
- echo '<input type="radio" id="' . $for . '" name="' . esc_attr( $this->option_name ) . '[' . $var_esc . ']" value="' . $key_esc . '" ' . checked( $this->options[ $var ], $key_esc, false ) . disabled( $this->is_control_disabled( $var ), true, false ) . ' />',
707
  '<label for="', $for, '">', esc_html( $value ), $screen_reader_text_html,'</label>';
708
  }
709
 
28
  */
29
  public $option_name;
30
 
 
 
 
 
 
 
 
 
31
  /**
32
  * Option instance.
33
  *
109
  public function set_option( $option_name ) {
110
  $this->option_name = $option_name;
111
 
 
 
 
 
 
112
  $this->option_instance = WPSEO_Options::get_option_instance( $option_name );
113
  if ( ! $this->option_instance ) {
114
  $this->option_instance = null;
115
  }
116
  }
117
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  /**
119
  * Generates the footer for admin pages.
120
  *
241
  * @param bool $label_left Whether the label should be left (true) or right (false).
242
  */
243
  public function checkbox( $var, $label, $label_left = false ) {
244
+ $val = WPSEO_Options::get( $var, false );
 
 
245
 
246
+ if ( $val === true ) {
247
+ $val = 'on';
248
  }
249
 
250
  $class = '';
255
  $class = 'double';
256
  }
257
 
258
+ echo '<input class="checkbox ', esc_attr( $class ), '" type="checkbox" id="', esc_attr( $var ), '" name="', esc_attr( $this->option_name ), '[', esc_attr( $var ), ']" value="on"', checked( $val, 'on', false ), disabled( $this->is_control_disabled( $var ), true, false ), '/>';
259
 
260
  if ( ! empty( $label ) ) {
261
  $this->label( $label, [ 'for' => $var ] );
264
  echo '<br class="clear" />';
265
  }
266
 
267
+ /**
268
+ * Creates a Checkbox input field list.
269
+ *
270
+ * @since 12.8
271
+ *
272
+ * @param string $variable The variables within the option to create the checkbox list for.
273
+ * @param string $labels The labels to show for the variable.
274
+ */
275
+ public function checkbox_list( $variable, $labels ) {
276
+ $values = WPSEO_Options::get( $variable, [] );
277
+
278
+ foreach ( $labels as $name => $label ) {
279
+ printf(
280
+ '<input class="checkbox double" id="%1$s" type="checkbox" name="%2$s" %3$s value="%4$s"/>',
281
+ esc_attr( $variable . '-' . $name ),
282
+ esc_attr( $this->option_name ) . '[' . esc_attr( $variable ) . '][' . $name . ']',
283
+ checked( ! empty( $values[ $name ] ), true, false ),
284
+ esc_attr( $name )
285
+ );
286
+
287
+ printf(
288
+ '<label class="checkbox" for="%1$s">%2$s</label>',
289
+ esc_attr( $variable . '-' . $name ), // #1
290
+ esc_html( $label )
291
+ );
292
+ echo '<br class="clear">';
293
+ }
294
+ }
295
+
296
  /**
297
  * Create a light switch input field using a single checkbox.
298
  *
306
  * @param bool $strong Whether the visual label is displayed in strong text. Default is false.
307
  */
308
  public function light_switch( $var, $label, $buttons = [], $reverse = true, $help = '', $strong = false ) {
309
+ $val = WPSEO_Options::get( $var, false );
310
 
311
+ if ( $val === true ) {
312
+ $val = 'on';
 
 
 
 
313
  }
314
 
315
  $class = 'switch-light switch-candy switch-yoast-seo';
324
 
325
  list( $off_button, $on_button ) = $buttons;
326
 
 
 
 
327
  $help_class = ! empty( $help ) ? ' switch-container__has-help' : '';
328
 
329
  $strong_class = ( $strong ) ? ' switch-light-visual-label__strong' : '';
331
  echo '<div class="switch-container', $help_class, '">',
332
  '<span class="switch-light-visual-label' . $strong_class . '" id="', esc_attr( $var . '-label' ), '">', esc_html( $label ), '</span>' . $help,
333
  '<label class="', $class, '"><b class="switch-yoast-seo-jaws-a11y">&nbsp;</b>',
334
+ '<input type="checkbox" aria-labelledby="', esc_attr( $var . '-label' ), '" id="', esc_attr( $var ), '" name="', esc_attr( $this->option_name ), '[', esc_attr( $var ), ']" value="on"', checked( $val, 'on', false ), disabled( $this->is_control_disabled( $var ), true, false ), '/>',
335
  '<span aria-hidden="true">
336
  <span>', esc_html( $off_button ) ,'</span>
337
  <span>', esc_html( $on_button ) ,'</span>
363
  'class' => '',
364
  ];
365
  $attr = wp_parse_args( $attr, $defaults );
366
+ $val = WPSEO_Options::get( $var, '' );
367
  $attributes = isset( $attr['autocomplete'] ) ? ' autocomplete="' . esc_attr( $attr['autocomplete'] ) . '"' : '';
368
  if ( isset( $attr['disabled'] ) && $attr['disabled'] ) {
369
  $attributes .= ' disabled';
409
  'class' => '',
410
  ];
411
  $attr = wp_parse_args( $attr, $defaults );
412
+ $val = WPSEO_Options::get( $var, '' );
413
 
414
  $this->label(
415
  $label,
430
  * @param string $id The ID of the element.
431
  */
432
  public function hidden( $var, $id = '' ) {
433
+ $val = WPSEO_Options::get( $var, '' );
434
  if ( is_bool( $val ) ) {
435
  $val = ( $val === true ) ? 'true' : 'false';
436
  }
471
  }
472
 
473
  $select_name = esc_attr( $this->option_name ) . '[' . esc_attr( $var ) . ']';
474
+ $active_option = WPSEO_Options::get( $var, '' );
475
  $wrapper_start_tag = '';
476
  $wrapper_end_tag = '';
477
 
504
  * @param string $label The label to show for the variable.
505
  */
506
  public function file_upload( $var, $label ) {
507
+ $val = WPSEO_Options::get( $var, '' );
508
+ if ( is_array( $val ) ) {
509
+ $val = $val['url'];
510
  }
511
 
512
  $var_esc = esc_attr( $var );
520
  echo '<input type="file" value="' . esc_attr( $val ) . '" class="textinput" name="' . esc_attr( $this->option_name ) . '[' . $var_esc . ']" id="' . $var_esc . '"', disabled( $this->is_control_disabled( $var ), true, false ), '/>';
521
 
522
  // Need to save separate array items in hidden inputs, because empty file inputs type will be deleted by settings API.
523
+ if ( ! empty( $val ) ) {
524
  $this->hidden( 'file', $this->option_name . '_file' );
525
  $this->hidden( 'url', $this->option_name . '_url' );
526
  $this->hidden( 'type', $this->option_name . '_type' );
537
  * @param string $label Label message.
538
  */
539
  public function media_input( $var, $label ) {
540
+ $val = WPSEO_Options::get( $var, '' );
541
+ $id_value = WPSEO_Options::get( $var . '_id', '' );
 
 
 
 
 
 
 
542
 
543
  $var_esc = esc_attr( $var );
544
 
599
  if ( ! is_array( $values ) || $values === [] ) {
600
  return;
601
  }
602
+ $val = WPSEO_Options::get( $var, false );
 
 
603
 
604
  $var_esc = esc_attr( $var );
605
 
627
  }
628
 
629
  $key_esc = esc_attr( $key );
630
+ echo '<input type="radio" class="radio" id="' . $var_esc . '-' . $key_esc . '" name="' . esc_attr( $this->option_name ) . '[' . $var_esc . ']" value="' . $key_esc . '" ' . checked( $val, $key_esc, false ) . disabled( $this->is_control_disabled( $var ), true, false ) . ' />';
631
  $this->label(
632
  $label,
633
  [
656
  if ( ! is_array( $values ) || $values === [] ) {
657
  return;
658
  }
659
+ $val = WPSEO_Options::get( $var, false );
660
+ if ( $val === true ) {
661
+ $val = 'on';
 
 
662
  }
663
+ if ( $val === false ) {
664
+ $val = 'off';
665
  }
666
 
667
  $help_class = ! empty( $help ) ? ' switch-container__has-help' : '';
685
 
686
  $key_esc = esc_attr( $key );
687
  $for = $var_esc . '-' . $key_esc;
688
+ echo '<input type="radio" id="' . $for . '" name="' . esc_attr( $this->option_name ) . '[' . $var_esc . ']" value="' . $key_esc . '" ' . checked( $val, $key_esc, false ) . disabled( $this->is_control_disabled( $var ), true, false ) . ' />',
689
  '<label for="', $for, '">', esc_html( $value ), $screen_reader_text_html,'</label>';
690
  }
691
 
admin/class-yoast-notification-center.php CHANGED
@@ -27,7 +27,7 @@ class Yoast_Notification_Center {
27
  /**
28
  * Holds the notifications.
29
  *
30
- * @var \Yoast_Notification[]
31
  */
32
  private $notifications = [];
33
 
@@ -41,7 +41,7 @@ class Yoast_Notification_Center {
41
  /**
42
  * Notifications that were resolved this execution.
43
  *
44
- * @var array
45
  */
46
  private $resolved = 0;
47
 
@@ -128,7 +128,7 @@ class Yoast_Notification_Center {
128
  */
129
  public static function is_notification_dismissed( Yoast_Notification $notification, $user_id = null ) {
130
 
131
- $user_id = ( ! is_null( $user_id ) ? $user_id : get_current_user_id() );
132
  $dismissal_key = $notification->get_dismissal_key();
133
 
134
  // This checks both the site-specific user option and the meta value.
@@ -271,7 +271,7 @@ class Yoast_Notification_Center {
271
  * @return void
272
  */
273
  public function setup_current_notifications() {
274
- $this->retrieve_notifications_from_storage();
275
 
276
  foreach ( $this->queued_transactions as $transaction ) {
277
  list( $callback, $args ) = $transaction;
@@ -301,12 +301,13 @@ class Yoast_Notification_Center {
301
  }
302
 
303
  $notification_id = $notification->get_id();
 
304
 
305
  // Empty notifications are always added.
306
  if ( $notification_id !== '' ) {
307
 
308
  // If notification ID exists in notifications, don't add again.
309
- $present_notification = $this->get_notification_by_id( $notification_id );
310
  if ( ! is_null( $present_notification ) ) {
311
  $this->remove_notification( $present_notification, false );
312
  }
@@ -317,19 +318,23 @@ class Yoast_Notification_Center {
317
  }
318
 
319
  // Add to list.
320
- $this->notifications[] = $notification;
321
  }
322
 
323
  /**
324
- * Get the notification by ID.
325
  *
326
  * @param string $notification_id The ID of the notification to search for.
 
327
  *
328
  * @return null|Yoast_Notification
329
  */
330
- public function get_notification_by_id( $notification_id ) {
 
 
 
331
 
332
- foreach ( $this->notifications as & $notification ) {
333
  if ( $notification_id === $notification->get_id() ) {
334
  return $notification;
335
  }
@@ -397,9 +402,13 @@ class Yoast_Notification_Center {
397
 
398
  $index = false;
399
 
 
 
 
 
400
  // Match persistent Notifications by ID, non persistent by item in the array.
401
  if ( $notification->is_persistent() ) {
402
- foreach ( $this->notifications as $current_index => $present_notification ) {
403
  if ( $present_notification->get_id() === $notification->get_id() ) {
404
  $index = $current_index;
405
  break;
@@ -407,7 +416,7 @@ class Yoast_Notification_Center {
407
  }
408
  }
409
  else {
410
- $index = array_search( $notification, $this->notifications, true );
411
  }
412
 
413
  if ( false === $index ) {
@@ -419,8 +428,8 @@ class Yoast_Notification_Center {
419
  $this->clear_dismissal( $notification );
420
  }
421
 
422
- unset( $this->notifications[ $index ] );
423
- $this->notifications = array_values( $this->notifications );
424
  }
425
 
426
  /**
@@ -450,7 +459,7 @@ class Yoast_Notification_Center {
450
  */
451
  public function get_notification_count( $dismissed = false ) {
452
 
453
- $notifications = $this->get_notifications();
454
  $notifications = array_filter( $notifications, [ $this, 'filter_persistent_notifications' ] );
455
 
456
  if ( ! $dismissed ) {
@@ -478,8 +487,7 @@ class Yoast_Notification_Center {
478
  * @return array|Yoast_Notification[] Sorted Notifications
479
  */
480
  public function get_sorted_notifications() {
481
-
482
- $notifications = $this->get_notifications();
483
  if ( empty( $notifications ) ) {
484
  return [];
485
  }
@@ -511,6 +519,39 @@ class Yoast_Notification_Center {
511
  $this->clear_notifications();
512
  }
513
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  /**
515
  * Save persistent notifications to storage.
516
  *
@@ -522,14 +563,24 @@ class Yoast_Notification_Center {
522
  */
523
  public function update_storage() {
524
 
525
- $notifications = $this->get_notifications();
 
 
 
 
 
 
 
 
526
 
527
  /**
528
  * Filter: 'yoast_notifications_before_storage' - Allows developer to filter notifications before saving them.
529
  *
530
  * @api Yoast_Notification[] $notifications
531
  */
532
- $notifications = apply_filters( 'yoast_notifications_before_storage', $notifications );
 
 
533
 
534
  // No notifications to store, clear storage if it was previously present.
535
  if ( empty( $notifications ) ) {
@@ -538,10 +589,20 @@ class Yoast_Notification_Center {
538
  return;
539
  }
540
 
541
- $notifications = array_map( [ $this, 'notification_to_array' ], $notifications );
 
542
 
543
- // Save the notifications to the storage.
544
- update_user_option( get_current_user_id(), self::STORAGE_KEY, $notifications );
 
 
 
 
 
 
 
 
 
545
  }
546
 
547
  /**
@@ -550,8 +611,24 @@ class Yoast_Notification_Center {
550
  * @return array|Yoast_Notification[] Registered notifications.
551
  */
552
  public function get_notifications() {
 
 
 
 
 
553
 
554
- return $this->notifications;
 
 
 
 
 
 
 
 
 
 
 
555
  }
556
 
557
  /**
@@ -585,9 +662,11 @@ class Yoast_Notification_Center {
585
  /**
586
  * Retrieve the notifications from storage.
587
  *
 
 
588
  * @return array|void Yoast_Notification[] Notifications.
589
  */
590
- private function retrieve_notifications_from_storage() {
591
 
592
  if ( $this->notifications_retrieved ) {
593
  return;
@@ -595,7 +674,7 @@ class Yoast_Notification_Center {
595
 
596
  $this->notifications_retrieved = true;
597
 
598
- $stored_notifications = get_user_option( self::STORAGE_KEY, get_current_user_id() );
599
 
600
  // Check if notifications are stored.
601
  if ( empty( $stored_notifications ) ) {
@@ -607,7 +686,7 @@ class Yoast_Notification_Center {
607
  // Apply array_values to ensure we get a 0-indexed array.
608
  $notifications = array_values( array_filter( $notifications, [ $this, 'filter_notification_current_user' ] ) );
609
 
610
- $this->notifications = $notifications;
611
  }
612
  }
613
 
@@ -671,7 +750,7 @@ class Yoast_Notification_Center {
671
  */
672
  private function filter_dismissed_notifications( Yoast_Notification $notification ) {
673
 
674
- return ! $this->maybe_dismiss_notification( $notification );
675
  }
676
 
677
  /**
27
  /**
28
  * Holds the notifications.
29
  *
30
+ * @var \Yoast_Notification[][]
31
  */
32
  private $notifications = [];
33
 
41
  /**
42
  * Notifications that were resolved this execution.
43
  *
44
+ * @var int
45
  */
46
  private $resolved = 0;
47
 
128
  */
129
  public static function is_notification_dismissed( Yoast_Notification $notification, $user_id = null ) {
130
 
131
+ $user_id = self::get_user_id( $user_id );
132
  $dismissal_key = $notification->get_dismissal_key();
133
 
134
  // This checks both the site-specific user option and the meta value.
271
  * @return void
272
  */
273
  public function setup_current_notifications() {
274
+ $this->retrieve_notifications_from_storage( get_current_user_id() );
275
 
276
  foreach ( $this->queued_transactions as $transaction ) {
277
  list( $callback, $args ) = $transaction;
301
  }
302
 
303
  $notification_id = $notification->get_id();
304
+ $user_id = $notification->get_user_id();
305
 
306
  // Empty notifications are always added.
307
  if ( $notification_id !== '' ) {
308
 
309
  // If notification ID exists in notifications, don't add again.
310
+ $present_notification = $this->get_notification_by_id( $notification_id, $user_id );
311
  if ( ! is_null( $present_notification ) ) {
312
  $this->remove_notification( $present_notification, false );
313
  }
318
  }
319
 
320
  // Add to list.
321
+ $this->notifications[ $user_id ][] = $notification;
322
  }
323
 
324
  /**
325
+ * Get the notification by ID and user ID.
326
  *
327
  * @param string $notification_id The ID of the notification to search for.
328
+ * @param int $user_id The ID of the user.
329
  *
330
  * @return null|Yoast_Notification
331
  */
332
+ public function get_notification_by_id( $notification_id, $user_id = null ) {
333
+ $user_id = self::get_user_id( $user_id );
334
+
335
+ $notifications = $this->get_notifications_for_user( $user_id );
336
 
337
+ foreach ( $notifications as $notification ) {
338
  if ( $notification_id === $notification->get_id() ) {
339
  return $notification;
340
  }
402
 
403
  $index = false;
404
 
405
+ // ID of the user to show the notification for, defaults to current user id.
406
+ $user_id = $notification->get_user_id();
407
+ $notifications = $this->get_notifications_for_user( $user_id );
408
+
409
  // Match persistent Notifications by ID, non persistent by item in the array.
410
  if ( $notification->is_persistent() ) {
411
+ foreach ( $notifications as $current_index => $present_notification ) {
412
  if ( $present_notification->get_id() === $notification->get_id() ) {
413
  $index = $current_index;
414
  break;
416
  }
417
  }
418
  else {
419
+ $index = array_search( $notification, $notifications, true );
420
  }
421
 
422
  if ( false === $index ) {
428
  $this->clear_dismissal( $notification );
429
  }
430
 
431
+ unset( $notifications[ $index ] );
432
+ $this->notifications[ $user_id ] = array_values( $notifications );
433
  }
434
 
435
  /**
459
  */
460
  public function get_notification_count( $dismissed = false ) {
461
 
462
+ $notifications = $this->get_notifications_for_user( get_current_user_id() );
463
  $notifications = array_filter( $notifications, [ $this, 'filter_persistent_notifications' ] );
464
 
465
  if ( ! $dismissed ) {
487
  * @return array|Yoast_Notification[] Sorted Notifications
488
  */
489
  public function get_sorted_notifications() {
490
+ $notifications = $this->get_notifications_for_user( get_current_user_id() );
 
491
  if ( empty( $notifications ) ) {
492
  return [];
493
  }
519
  $this->clear_notifications();
520
  }
521
 
522
+ /**
523
+ * Returns the given user ID if it exists.
524
+ * Otherwise, this function returns the ID of the current user.
525
+ *
526
+ * @param int $user_id The user ID to check.
527
+ *
528
+ * @return int The user ID to use.
529
+ */
530
+ private static function get_user_id( $user_id ) {
531
+ if ( $user_id ) {
532
+ return $user_id;
533
+ }
534
+ return get_current_user_id();
535
+ }
536
+
537
+ /**
538
+ * Splits the notifications on user ID.
539
+ *
540
+ * In other terms, it returns an associative array,
541
+ * mapping user ID to a list of notifications for this user.
542
+ *
543
+ * @param array|Yoast_Notification[] $notifications The notifications to split.
544
+ *
545
+ * @return array The notifications, split on user ID.
546
+ */
547
+ private function split_on_user_id( $notifications ) {
548
+ $split_notifications = [];
549
+ foreach ( $notifications as $notification ) {
550
+ $split_notifications[ $notification->get_user_id() ][] = $notification;
551
+ }
552
+ return $split_notifications;
553
+ }
554
+
555
  /**
556
  * Save persistent notifications to storage.
557
  *
563
  */
564
  public function update_storage() {
565
 
566
+ $notifications = $this->notifications;
567
+
568
+ /**
569
+ * @var Yoast_Notification[] $merged_notifications
570
+ */
571
+ $merged_notifications = [];
572
+ if ( ! empty( $notifications ) ) {
573
+ $merged_notifications = array_merge( ...$notifications );
574
+ }
575
 
576
  /**
577
  * Filter: 'yoast_notifications_before_storage' - Allows developer to filter notifications before saving them.
578
  *
579
  * @api Yoast_Notification[] $notifications
580
  */
581
+ $merged_notifications = apply_filters( 'yoast_notifications_before_storage', $merged_notifications );
582
+
583
+ $notifications = $this->split_on_user_id( $merged_notifications );
584
 
585
  // No notifications to store, clear storage if it was previously present.
586
  if ( empty( $notifications ) ) {
589
  return;
590
  }
591
 
592
+ array_walk( $notifications , [ $this, 'store_notifications_for_user' ] );
593
+ }
594
 
595
+ /**
596
+ * Stores the notifications to its respective user's storage.
597
+ *
598
+ * @param array|Yoast_Notification[] $notifications The notifications to store.
599
+ * @param int $user_id The ID of the user for which to store the notifications.
600
+ *
601
+ * @return void
602
+ */
603
+ private function store_notifications_for_user( $notifications, $user_id ) {
604
+ $notifications_as_arrays = array_map( [ $this, 'notification_to_array' ], $notifications );
605
+ update_user_option( $user_id, self::STORAGE_KEY, $notifications_as_arrays );
606
  }
607
 
608
  /**
611
  * @return array|Yoast_Notification[] Registered notifications.
612
  */
613
  public function get_notifications() {
614
+ if ( ! $this->notifications ) {
615
+ return [];
616
+ }
617
+ return array_merge( ...$this->notifications );
618
+ }
619
 
620
+ /**
621
+ * Returns the notifications for the given user.
622
+ *
623
+ * @param int $user_id The id of the user to check.
624
+ *
625
+ * @return Yoast_Notification[] The notifications for the user with the given ID.
626
+ */
627
+ public function get_notifications_for_user( $user_id ) {
628
+ if ( array_key_exists( $user_id, $this->notifications ) ) {
629
+ return $this->notifications[ $user_id ];
630
+ }
631
+ return [];
632
  }
633
 
634
  /**
662
  /**
663
  * Retrieve the notifications from storage.
664
  *
665
+ * @param int $user_id The ID of the user to retrieve notifications for.
666
+ *
667
  * @return array|void Yoast_Notification[] Notifications.
668
  */
669
+ private function retrieve_notifications_from_storage( $user_id ) {
670
 
671
  if ( $this->notifications_retrieved ) {
672
  return;
674
 
675
  $this->notifications_retrieved = true;
676
 
677
+ $stored_notifications = get_user_option( self::STORAGE_KEY, $user_id );
678
 
679
  // Check if notifications are stored.
680
  if ( empty( $stored_notifications ) ) {
686
  // Apply array_values to ensure we get a 0-indexed array.
687
  $notifications = array_values( array_filter( $notifications, [ $this, 'filter_notification_current_user' ] ) );
688
 
689
+ $this->notifications[ $user_id ] = $notifications;
690
  }
691
  }
692
 
750
  */
751
  private function filter_dismissed_notifications( Yoast_Notification $notification ) {
752
 
753
+ return ! self::maybe_dismiss_notification( $notification );
754
  }
755
 
756
  /**
admin/class-yoast-notification.php CHANGED
@@ -72,6 +72,7 @@ class Yoast_Notification {
72
  private $defaults = [
73
  'type' => self::UPDATED,
74
  'id' => '',
 
75
  'nonce' => null,
76
  'priority' => 0.5,
77
  'data_json' => [],
@@ -108,6 +109,29 @@ class Yoast_Notification {
108
  return $this->options['id'];
109
  }
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  /**
112
  * Retrieve nonce identifier.
113
  *
@@ -196,7 +220,7 @@ class Yoast_Notification {
196
  */
197
  public function match_capabilities() {
198
  // Super Admin can do anything.
199
- if ( is_multisite() && is_super_admin() ) {
200
  return true;
201
  }
202
 
@@ -256,7 +280,13 @@ class Yoast_Notification {
256
  * @return bool
257
  */
258
  private function has_capability( $capability ) {
259
- return current_user_can( $capability );
 
 
 
 
 
 
260
  }
261
 
262
  /**
@@ -371,6 +401,11 @@ class Yoast_Notification {
371
  $options['capabilities'] = [ 'wpseo_manage_options' ];
372
  }
373
 
 
 
 
 
 
374
  return $options;
375
  }
376
 
72
  private $defaults = [
73
  'type' => self::UPDATED,
74
  'id' => '',
75
+ 'user' => null,
76
  'nonce' => null,
77
  'priority' => 0.5,
78
  'data_json' => [],
109
  return $this->options['id'];
110
  }
111
 
112
+ /**
113
+ * Retrieve the user to show the notification for.
114
+ *
115
+ * @return WP_User The user to show this notification for.
116
+ */
117
+ public function get_user() {
118
+ return $this->options['user'];
119
+ }
120
+
121
+ /**
122
+ * Retrieve the is of the user to show the notification for.
123
+ *
124
+ * Returns the id of the current user if not user has been sent.
125
+ *
126
+ * @return integer The user id
127
+ */
128
+ public function get_user_id() {
129
+ if ( $this->get_user() !== null ) {
130
+ return $this->get_user()->ID;
131
+ }
132
+ return get_current_user_id();
133
+ }
134
+
135
  /**
136
  * Retrieve nonce identifier.
137
  *
220
  */
221
  public function match_capabilities() {
222
  // Super Admin can do anything.
223
+ if ( is_multisite() && is_super_admin( $this->options['user']->ID ) ) {
224
  return true;
225
  }
226
 
280
  * @return bool
281
  */
282
  private function has_capability( $capability ) {
283
+ $user = $this->options['user'];
284
+
285
+ $role_caps = $user->get_role_caps();
286
+ if ( array_key_exists( $capability, $role_caps ) ) {
287
+ return $role_caps[ $capability ];
288
+ }
289
+ return false;
290
  }
291
 
292
  /**
401
  $options['capabilities'] = [ 'wpseo_manage_options' ];
402
  }
403
 
404
+ // Set to the current user if not supplied.
405
+ if ( $options['user'] === null ) {
406
+ $options['user'] = wp_get_current_user();
407
+ }
408
+
409
  return $options;
410
  }
411
 
admin/config-ui/class-configuration-page.php CHANGED
@@ -84,7 +84,6 @@ class WPSEO_Configuration_Page {
84
  */
85
  wp_enqueue_style( 'forms' );
86
  $asset_manager = new WPSEO_Admin_Asset_Manager();
87
- $asset_manager->register_wp_assets();
88
  $asset_manager->register_assets();
89
  $asset_manager->enqueue_script( 'configuration-wizard' );
90
  $asset_manager->enqueue_style( 'yoast-components' );
84
  */
85
  wp_enqueue_style( 'forms' );
86
  $asset_manager = new WPSEO_Admin_Asset_Manager();
 
87
  $asset_manager->register_assets();
88
  $asset_manager->enqueue_script( 'configuration-wizard' );
89
  $asset_manager->enqueue_style( 'yoast-components' );
admin/import/class-import-settings.php CHANGED
@@ -110,5 +110,8 @@ class WPSEO_Import_Settings {
110
 
111
  $this->status->set_msg( __( 'Settings successfully imported.', 'wordpress-seo' ) );
112
  $this->status->set_status( true );
 
 
 
113
  }
114
  }
110
 
111
  $this->status->set_msg( __( 'Settings successfully imported.', 'wordpress-seo' ) );
112
  $this->status->set_status( true );
113
+
114
+ // Reset the cached option values.
115
+ WPSEO_Options::fill_cache();
116
  }
117
  }
admin/links/class-link-watcher.php CHANGED
@@ -45,6 +45,11 @@ class WPSEO_Link_Watcher {
45
  * @return void
46
  */
47
  public function save_post( $post_id, WP_Post $post ) {
 
 
 
 
 
48
  /**
49
  * Filter: 'wpseo_should_index_links' - Allows disabling of Yoast's links indexation.
50
  *
45
  * @return void
46
  */
47
  public function save_post( $post_id, WP_Post $post ) {
48
+ // Bail if this is a multisite installation and the site has been switched.
49
+ if ( is_multisite() && ms_is_switched() ) {
50
+ return;
51
+ }
52
+
53
  /**
54
  * Filter: 'wpseo_should_index_links' - Allows disabling of Yoast's links indexation.
55
  *
admin/metabox/class-metabox.php CHANGED
@@ -72,9 +72,13 @@ class WPSEO_Metabox extends WPSEO_Meta {
72
  * @return bool Whether the request comes from an IE 11 browser.
73
  */
74
  public static function is_internet_explorer() {
75
- $user_agent = $_SERVER['HTTP_USER_AGENT'];
 
 
 
 
76
 
77
- if ( ! stripos( $user_agent, 'Trident/7.0' ) ) {
78
  return false;
79
  }
80
 
@@ -154,8 +158,8 @@ class WPSEO_Metabox extends WPSEO_Meta {
154
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-nofollow']['options']['0'] = __( 'Yes', 'wordpress-seo' );
155
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-nofollow']['options']['1'] = __( 'No', 'wordpress-seo' );
156
 
157
- WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['title'] = __( 'Meta robots advanced', 'wordpress-seo' );
158
- WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['description'] = __( 'If you want to apply advanced <code>meta</code> robots settings for this page, please define them in the following field.', 'wordpress-seo' );
159
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['options']['noimageindex'] = __( 'No Image Index', 'wordpress-seo' );
160
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['options']['noarchive'] = __( 'No Archive', 'wordpress-seo' );
161
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['options']['nosnippet'] = __( 'No Snippet', 'wordpress-seo' );
72
  * @return bool Whether the request comes from an IE 11 browser.
73
  */
74
  public static function is_internet_explorer() {
75
+ if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
76
+ return false;
77
+ }
78
+
79
+ $user_agent = sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) );
80
 
81
+ if ( stripos( $user_agent, 'Trident/7.0' ) === false ) {
82
  return false;
83
  }
84
 
158
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-nofollow']['options']['0'] = __( 'Yes', 'wordpress-seo' );
159
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-nofollow']['options']['1'] = __( 'No', 'wordpress-seo' );
160
 
161
+ WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['title'] = __( 'Meta robots advanced', 'wordpress-seo' );
162
+ WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['description'] = __( 'If you want to apply advanced <code>meta</code> robots settings for this page, please define them in the following field.', 'wordpress-seo' );
163
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['options']['noimageindex'] = __( 'No Image Index', 'wordpress-seo' );
164
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['options']['noarchive'] = __( 'No Archive', 'wordpress-seo' );
165
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-adv']['options']['nosnippet'] = __( 'No Snippet', 'wordpress-seo' );
admin/statistics/class-statistics-integration.php CHANGED
@@ -26,6 +26,11 @@ class WPSEO_Statistic_Integration implements WPSEO_WordPress_Integration {
26
  * @return void
27
  */
28
  public function clear_cache() {
 
 
 
 
 
29
  delete_transient( WPSEO_Statistics_Service::CACHE_TRANSIENT_KEY );
30
  }
31
  }
26
  * @return void
27
  */
28
  public function clear_cache() {
29
+ // Bail if this is a multisite installation and the site has been switched.
30
+ if ( is_multisite() && ms_is_switched() ) {
31
+ return;
32
+ }
33
+
34
  delete_transient( WPSEO_Statistics_Service::CACHE_TRANSIENT_KEY );
35
  }
36
  }
admin/taxonomy/class-taxonomy.php CHANGED
@@ -195,6 +195,7 @@ class WPSEO_Taxonomy {
195
  * @param string $taxonomy The taxonomy the term belongs to.
196
  */
197
  public function update_term( $term_id, $tt_id, $taxonomy ) {
 
198
  if ( is_multisite() && ms_is_switched() ) {
199
  return;
200
  }
195
  * @param string $taxonomy The taxonomy the term belongs to.
196
  */
197
  public function update_term( $term_id, $tt_id, $taxonomy ) {
198
+ // Bail if this is a multisite installation and the site has been switched.
199
  if ( is_multisite() && ms_is_switched() ) {
200
  return;
201
  }
admin/tracking/class-tracking-server-data.php CHANGED
@@ -74,12 +74,12 @@ class WPSEO_Tracking_Server_Data implements WPSEO_Collection {
74
  */
75
  protected function get_php_extensions() {
76
  return [
77
- 'imagick' => extension_loaded( 'imagick' ),
78
- 'filter' => extension_loaded( 'filter' ),
79
- 'bcmath' => extension_loaded( 'bcmath' ),
80
- 'modXml' => extension_loaded( 'modXml' ),
81
- 'pcre' => extension_loaded( 'pcre' ),
82
- 'xml' => extension_loaded( 'xml' ),
83
  ];
84
  }
85
  }
74
  */
75
  protected function get_php_extensions() {
76
  return [
77
+ 'imagick' => extension_loaded( 'imagick' ),
78
+ 'filter' => extension_loaded( 'filter' ),
79
+ 'bcmath' => extension_loaded( 'bcmath' ),
80
+ 'pcre' => extension_loaded( 'pcre' ),
81
+ 'xml' => extension_loaded( 'xml' ),
82
+ 'pdo_mysql' => extension_loaded( 'pdo_mysql' ),
83
  ];
84
  }
85
  }
admin/views/licenses.php CHANGED
@@ -158,7 +158,7 @@ $new_tab_message = sprintf(
158
  <?php if ( $has_valid_premium_subscription ) : ?>
159
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
160
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
161
- class="yoast-link--license">
162
  <?php
163
  printf(
164
  /* translators: %s expands to the extension title */
@@ -173,7 +173,7 @@ $new_tab_message = sprintf(
173
  <?php else : ?>
174
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
175
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
176
- class="yoast-link--license">
177
  <?php
178
  printf(
179
  /* translators: %s expands to the extension title */
@@ -190,7 +190,7 @@ $new_tab_message = sprintf(
190
  <?php else : ?>
191
 
192
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_buy_url() ); ?>"
193
- class="yoast-button-upsell">
194
  <?php
195
  printf(
196
  /* translators: $s expands to Yoast SEO Premium */
@@ -205,7 +205,7 @@ $new_tab_message = sprintf(
205
  </a>
206
 
207
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_info_url() ); ?>"
208
- class="yoast-link--more-info">
209
  <?php
210
  printf(
211
  /* translators: Text between 1: and 2: will only be shown to screen readers. 3: expands to the product name. */
@@ -264,7 +264,7 @@ $new_tab_message = sprintf(
264
  <?php if ( $addon_manager->has_valid_subscription( $slug ) ) : ?>
265
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
266
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
267
- class="yoast-link--license">
268
  <?php
269
  printf(
270
  /* translators: %s expands to the extension title */
@@ -279,7 +279,7 @@ $new_tab_message = sprintf(
279
  <?php else : ?>
280
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
281
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
282
- class="yoast-link--license">
283
  <?php
284
  printf(
285
  /* translators: %s expands to the extension title */
@@ -294,7 +294,7 @@ $new_tab_message = sprintf(
294
  <?php endif; ?>
295
  <?php else : ?>
296
  <a target="_blank" class="yoast-button-upsell"
297
- href="<?php echo esc_url( $extension->get_buy_url() ); ?>">
298
  <?php
299
  printf(
300
  /* translators: %s expands to the product name */
@@ -309,7 +309,7 @@ $new_tab_message = sprintf(
309
  </a>
310
 
311
  <a target="_blank" class="yoast-link--more-info"
312
- href="<?php echo esc_url( $extension->get_info_url() ); ?>">
313
  <?php
314
  printf(
315
  /* translators: Text between 1: and 2: will only be shown to screen readers. 3: expands to the product name. */
158
  <?php if ( $has_valid_premium_subscription ) : ?>
159
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
160
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
161
+ class="yoast-link--license">
162
  <?php
163
  printf(
164
  /* translators: %s expands to the extension title */
173
  <?php else : ?>
174
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
175
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
176
+ class="yoast-link--license">
177
  <?php
178
  printf(
179
  /* translators: %s expands to the extension title */
190
  <?php else : ?>
191
 
192
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_buy_url() ); ?>"
193
+ class="yoast-button-upsell">
194
  <?php
195
  printf(
196
  /* translators: $s expands to Yoast SEO Premium */
205
  </a>
206
 
207
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_info_url() ); ?>"
208
+ class="yoast-link--more-info">
209
  <?php
210
  printf(
211
  /* translators: Text between 1: and 2: will only be shown to screen readers. 3: expands to the product name. */
264
  <?php if ( $addon_manager->has_valid_subscription( $slug ) ) : ?>
265
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
266
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
267
+ class="yoast-link--license">
268
  <?php
269
  printf(
270
  /* translators: %s expands to the extension title */
279
  <?php else : ?>
280
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
281
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
282
+ class="yoast-link--license">
283
  <?php
284
  printf(
285
  /* translators: %s expands to the extension title */
294
  <?php endif; ?>
295
  <?php else : ?>
296
  <a target="_blank" class="yoast-button-upsell"
297
+ href="<?php echo esc_url( $extension->get_buy_url() ); ?>">
298
  <?php
299
  printf(
300
  /* translators: %s expands to the product name */
309
  </a>
310
 
311
  <a target="_blank" class="yoast-link--more-info"
312
+ href="<?php echo esc_url( $extension->get_info_url() ); ?>">
313
  <?php
314
  printf(
315
  /* translators: Text between 1: and 2: will only be shown to screen readers. 3: expands to the product name. */
admin/views/sidebar.php CHANGED
@@ -40,7 +40,7 @@ $new_tab_message = WPSEO_Admin_Utils::get_new_tab_message();
40
  </ul>
41
 
42
  <a id="wpseo-premium-button" class="yoast-button-upsell"
43
- href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jj' ); ?>" target="_blank">
44
  <?php
45
  /* translators: %s expands to Yoast SEO Premium */
46
  printf( esc_html__( 'Get %s', 'wordpress-seo' ), 'Yoast SEO Premium' );
@@ -62,7 +62,7 @@ $new_tab_message = WPSEO_Admin_Utils::get_new_tab_message();
62
  <p>
63
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jq' ); ?>" target="_blank">
64
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/local_plugin_assistant.svg' ); ?>"
65
- alt="">
66
  <strong>Be found on Google Maps!</strong>
67
  <?php
68
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
@@ -76,8 +76,8 @@ $new_tab_message = WPSEO_Admin_Utils::get_new_tab_message();
76
  <p>
77
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jo' ); ?>" target="_blank">
78
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/video_plugin_assistant.svg' ); ?>"
79
- class="alignleft"
80
- alt="">
81
  <strong>Rank in Google Video</strong>
82
  <?php
83
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
@@ -91,7 +91,7 @@ $new_tab_message = WPSEO_Admin_Utils::get_new_tab_message();
91
  <p>
92
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jp' ); ?>" target="_blank">
93
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/woo_plugin_assistant.svg' ); ?>"
94
- alt="">
95
  <strong>WooCommerce SEO</strong>
96
  <?php
97
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
@@ -105,8 +105,8 @@ $new_tab_message = WPSEO_Admin_Utils::get_new_tab_message();
105
  <p>
106
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jr' ); ?>" target="_blank">
107
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/news_plugin_assistant.svg' ); ?>"
108
- class="alignleft"
109
- alt="">
110
  <strong>Rank in Google News</strong>
111
  <?php
112
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
40
  </ul>
41
 
42
  <a id="wpseo-premium-button" class="yoast-button-upsell"
43
+ href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jj' ); ?>" target="_blank">
44
  <?php
45
  /* translators: %s expands to Yoast SEO Premium */
46
  printf( esc_html__( 'Get %s', 'wordpress-seo' ), 'Yoast SEO Premium' );
62
  <p>
63
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jq' ); ?>" target="_blank">
64
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/local_plugin_assistant.svg' ); ?>"
65
+ alt="">
66
  <strong>Be found on Google Maps!</strong>
67
  <?php
68
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
76
  <p>
77
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jo' ); ?>" target="_blank">
78
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/video_plugin_assistant.svg' ); ?>"
79
+ class="alignleft"
80
+ alt="">
81
  <strong>Rank in Google Video</strong>
82
  <?php
83
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
91
  <p>
92
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jp' ); ?>" target="_blank">
93
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/woo_plugin_assistant.svg' ); ?>"
94
+ alt="">
95
  <strong>WooCommerce SEO</strong>
96
  <?php
97
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
105
  <p>
106
  <a href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/jr' ); ?>" target="_blank">
107
  <img src="<?php echo esc_url( $wpseo_plugin_dir_url . 'images/news_plugin_assistant.svg' ); ?>"
108
+ class="alignleft"
109
+ alt="">
110
  <strong>Rank in Google News</strong>
111
  <?php
112
  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $new_tab_message is properly escaped.
admin/views/tabs/metas/paper-content/general/knowledge-graph.php CHANGED
@@ -50,8 +50,9 @@ $knowledge_graph_help = new WPSEO_Admin_Help_Panel(
50
  * Render the `knowledge-graph-company-warning` div when the company name or logo are not set.
51
  * This div is used as React render root in `js/src/search-appearance.js`.
52
  */
53
- $is_company_info_missing = empty( $yform->options['company_name'] ) || empty( $yform->options['company_logo'] );
54
- if ( $is_company_info_missing ) :
 
55
  ?>
56
  <div id="knowledge-graph-company-warning"></div>
57
  <?php endif; ?>
50
  * Render the `knowledge-graph-company-warning` div when the company name or logo are not set.
51
  * This div is used as React render root in `js/src/search-appearance.js`.
52
  */
53
+ $yoast_seo_company_name = WPSEO_Options::get( 'company_name', '' );
54
+ $yoast_seo_company_logo = WPSEO_Options::get( 'company_logo', '' );
55
+ if ( empty( $yoast_seo_company_name ) || empty( $yoast_seo_company_logo ) ) :
56
  ?>
57
  <div id="knowledge-graph-company-warning"></div>
58
  <?php endif; ?>
admin/views/tabs/social/pinterest.php CHANGED
@@ -17,7 +17,7 @@ echo '<h2>' . esc_html__( 'Pinterest settings', 'wordpress-seo' ) . '</h2>';
17
 
18
  printf(
19
  '<p>%s</p>',
20
- esc_html__( 'Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Pinterest.', 'wordpress-seo' )
21
  );
22
  printf(
23
  '<p>%s</p>',
17
 
18
  printf(
19
  '<p>%s</p>',
20
+ esc_html__( 'Pinterest uses Open Graph metadata just like Facebook, so be sure to keep the "Add Open Graph meta data" setting on the Facebook tab enabled if you want to optimize your site for Pinterest.', 'wordpress-seo' )
21
  );
22
  printf(
23
  '<p>%s</p>',
admin/views/tabs/social/twitterbox.php CHANGED
@@ -18,7 +18,7 @@ echo '<h2>' . esc_html__( 'Twitter settings', 'wordpress-seo' ) . '</h2>';
18
 
19
  printf(
20
  '<p>%s</p>',
21
- esc_html__( 'Twitter uses Open Graph metadata just like Facebook, so be sure to keep the Open Graph checkbox on the Facebook tab checked if you want to optimize your site for Twitter.', 'wordpress-seo' )
22
  );
23
 
24
  $yform->light_switch( 'twitter', __( 'Add Twitter card meta data', 'wordpress-seo' ), [], true, '', true );
18
 
19
  printf(
20
  '<p>%s</p>',
21
+ esc_html__( 'Twitter uses Open Graph metadata just like Facebook, so be sure to keep the "Add Open Graph meta data" setting on the Facebook tab enabled if you want to optimize your site for Twitter.', 'wordpress-seo' )
22
  );
23
 
24
  $yform->light_switch( 'twitter', __( 'Add Twitter card meta data', 'wordpress-seo' ), [], true, '', true );
css/dist/admin-global-1271-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .wpseo-premium-indicator{width:1px;height:1px;display:inline-block}#adminmenu .wpseo-premium-indicator{margin:-2px 2px -3px 0;color:inherit}.wpseo-premium-indicator svg{height:100%;width:auto;display:none}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{display:none;position:absolute;z-index:1000000;padding:6px 8px 5px;border-radius:3px;opacity:0;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);pointer-events:none;-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{display:none;position:absolute;z-index:1000001;width:0;height:0;border:5px solid transparent;opacity:0;color:rgba(0,0,0,.8);content:"\00a0";pointer-events:none}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{opacity:1;animation:none}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{top:100%;left:50%;margin-top:5px}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{top:auto;left:50%;bottom:-5px;margin-left:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se:after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-sw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{left:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{top:-5px;left:50%;bottom:auto;margin-left:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne:after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-nw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-w:after{left:100%;bottom:50%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w:before{top:50%;bottom:50%;right:-5px;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-e:after{bottom:50%;right:100%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e:before{top:50%;left:-5px;bottom:50%;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline:after{width:250px;width:-webkit-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{left:auto;right:50%;-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.yoast-tooltip-w:after{margin-left:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.yoast-measure{max-width:600px}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{margin:0 0 0 10px;font-size:14px;font-weight:600}.wpseo-premium-popup-title{margin:1em 0!important;padding:0!important;font-size:1.3em!important;font-weight:600!important}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{max-width:100%;height:auto}.select2-container .select2-search--dropdown .select2-search__field{margin:0;padding:0 8px;min-height:30px}.select2-results__option,.select2-search--inline,.select2-selection__choice{margin-bottom:0}.select2-container .select2-search--inline .select2-search__field{margin-top:6px!important;line-height:inherit;min-height:0}.wpseo-admin-page .select2-container .select2-selection--single,.wpseo-metabox .select2-container .select2-selection--single{height:auto}.wpseo-admin-page .select2-container .select2-selection--single .select2-selection__arrow,.wpseo-metabox .select2-container .select2-selection--single .select2-selection__arrow{height:100%}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-settings{margin-bottom:2em;padding-right:220px}.yoast-settings h2{margin-bottom:0;margin-right:-220px}.yoast-settings label{display:inline-block;width:200px;padding-top:4px;padding-left:10px;margin-left:6px;margin-right:-220px;font-size:14px;line-height:1.3;font-weight:600;color:#23282d;vertical-align:top}.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea,.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{margin-top:2em;margin-bottom:.5em}.yoast-settings__textarea--medium{width:100%;max-width:600px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{vertical-align:top;position:relative;top:1px}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 0 10px 4px}.yoast-settings__checkbox+label,.yoast-settings__radio+label{width:auto;margin-right:0;margin-left:0;padding:0;max-width:calc(100% - 25px)}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{margin-top:0;margin-bottom:10px;font-weight:400}.yoast-settings legend{font-size:14px;font-weight:600;color:#23282d}.yoast-settings .description{margin-top:0;font-size:14px}td .wpseo-score-icon{display:inline-block;width:12px;height:12px;margin-right:5px;border-radius:50%;background:#888;line-height:16px;margin-top:3px}.fixed th.column-wpseo-linked,.fixed th.column-wpseo-links,.fixed th.column-wpseo-score,.fixed th.column-wpseo-score-readability{width:3em;padding:0}th.column-wpseo-linked a,th.column-wpseo-links a,th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{overflow:visible;display:inline-block;vertical-align:middle;padding:8px 0}th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{padding:8px 11px}.column-wpseo-links .yoast-tooltip-multiline:after{max-width:160px}.column-wpseo-linked .yoast-tooltip-multiline:after{max-width:170px}.yoast-column-header-has-tooltip{position:relative}.manage-column .yoast-column-header-has-tooltip:before{content:"";display:inline-block;width:20px;height:20px;padding:0;vertical-align:top;text-decoration:none!important;color:#444}.manage-column .yoast-linked-to:before{background:transparent url(../../images/link-out-icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-linked-from:before{background:transparent url(../../images/link-in-icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-column-seo-score:before{background:transparent url(../../images/Yoast_SEO_negative_icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-column-readability:before{background:transparent url(../../images/readability-icon.svg) no-repeat 100% 0;background-size:20px}td.column-wpseo-linked,td.column-wpseo-links{word-wrap:normal}@media screen and (max-width:782px){.yoast-settings{padding-right:0}.yoast-settings h2{margin-right:0}.yoast-settings label{width:auto;padding:0;margin-left:0;margin-right:0}.yoast-settings__radio+label,.yoast .yoast-settings__radio{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{display:block;width:100%;margin-top:0;margin-bottom:0;padding:7px 10px;max-width:none;line-height:1.5;box-sizing:border-box}.screen-reader-text.wpseo-score-text{position:static!important;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.contact-premium-support{text-align:center}.contact-premium-support__content{margin:0 auto 1.5em;font-size:.9375rem;line-height:1.4}.contact-premium-support__content:nth-child(2){max-width:610px}.contact-premium-support__content:nth-child(3){max-width:560px}.contact-premium-support .contact-premium-support__button{margin-bottom:48px}.wpseo-premium-description{margin-top:.5em}.wpseo-premium-advantages-list{list-style:disc;padding-right:1.5em}.yoast_help.yoast-help-button{overflow:visible;position:relative;width:20px;height:20px;margin:0;padding:0;border:0;outline:none;color:#72777c;background:transparent;box-shadow:none;vertical-align:top;cursor:pointer}.yoast-section .yoast_help.yoast-help-button{float:left}.help-button-inline .yoast_help.yoast-help-button{margin-top:-4px}.yoast-section .yoast_help.yoast-help-button{margin-top:-44px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-left:6px}.yoast_help .yoast-help-icon:before{position:absolute;top:0;right:0;padding:4px;content:"\f223"}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus .yoast-help-icon:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-help-panel{display:none;clear:both;max-width:30em!important;padding:0 0 1em;font-weight:400;white-space:normal}.wpseo-admin-page .yoast-help-panel{max-width:600px!important}.copy-home-meta-description .yoast-help-panel{max-width:400px!important}.yoast-modal_is-open{overflow:hidden}.yoast-alert .yoast-seo-icon{float:right;margin:20px 10px}.yoast-alert .yoast-seo-icon-wrap{margin:0 85px 0 0}.yoast-button-upsell{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box;min-height:48px;padding:8px 1em;font-size:16px;line-height:1.5;font-family:Arial,sans-serif;color:#000;border-radius:4px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.2);filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));text-decoration:none;background-color:#fec228}.yoast-button-upsell:active,.yoast-button-upsell:focus,.yoast-button-upsell:hover{color:#000;background-color:#f2ae01}.yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 rgba(0,0,0,.2),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-button-upsell:active{-ms-transform:translateY(1px);transform:translateY(1px);box-shadow:none;filter:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.yoast-button-upsell:after{display:inline-block;content:"";min-height:32px}}.yoast-button-upsell#wpseo-premium-button{color:#000}.yoast-button-upsell__caret{-ms-flex-negative:0;flex-shrink:0;width:8px;height:16px;margin:0 6px 0 -2px;background:transparent url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M%200%20384%2E662%20V%20127%2E338%20c%200%20%2D17%2E818%2021%2E543%20%2D26%2E741%2034%2E142%20%2D14%2E142%20l%20128%2E662%20128%2E662%20c%207%2E81%207%2E81%207%2E81%2020%2E474%200%2028%2E284%20L%2034%2E142%20398%2E804%20C%2021%2E543%20411%2E404%200%20402%2E48%200%20384%2E662%20Z%22%2F%3E%3C%2Fsvg%3E") 50% no-repeat}.rtl .yoast-button-upsell__caret{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M192%20127%2E338v257%2E324c0%2017%2E818%2D21%2E543%2026%2E741%2D34%2E142%2014%2E142L29%2E196%20270%2E142c%2D7%2E81%2D7%2E81%2D7%2E81%2D20%2E474%200%2D28%2E284l128%2E662%2D128%2E662c12%2E599%2D12%2E6%2034%2E142%2D3%2E676%2034%2E142%2014%2E142z%22%2F%3E%3C%2Fsvg%3E")}body.folded .wpseo-admin-submit-fixed{right:36px}@media screen and (max-width:782px){body.folded .wpseo-admin-submit-fixed{right:0}}.wpseo-admin-submit{z-index:5;display:-ms-flexbox;display:flex;padding:16px 0;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:baseline;align-items:baseline;margin:0}.wpseo-admin-submit.wpseo-admin-submit-fixed{padding:16px;position:fixed;bottom:0;right:160px;left:281px;background-color:#fff;max-width:800px;box-shadow:0 1px 8px 1px rgba(0,0,0,.5);margin:0 16px}@media screen and (max-width:1024px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:0}}@media only screen and (max-width:960px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:36px}}@media screen and (max-width:782px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:0;margin:0}}.wpseo-admin-submit p.submit{padding:0;margin:0}.wpseo-admin-submit p.wpseo-message{margin:0 0 0 16px;padding:0;color:#008a00}.yoast-alert-box{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;position:relative;padding:16px;border:1px solid rgba(0,0,0,.2);font-size:14px;font-weight:400;line-height:1.5;margin:16px 0}.yoast-alert-box span.icon{display:block;margin-left:8px}.yoast-alert-box a{color:#004973;text-decoration:underline}.yoast-alert-box__warning{color:#674e00;background:#fff3cd}
 
css/dist/admin-global-1271.min.css DELETED
@@ -1 +0,0 @@
1
- .wpseo-premium-indicator{width:1px;height:1px;display:inline-block}#adminmenu .wpseo-premium-indicator{margin:-2px 0 -3px 2px;color:inherit}.wpseo-premium-indicator svg{height:100%;width:auto;display:none}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{display:none;position:absolute;z-index:1000000;padding:6px 8px 5px;border-radius:3px;opacity:0;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);pointer-events:none;-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{display:none;position:absolute;z-index:1000001;width:0;height:0;border:5px solid transparent;opacity:0;color:rgba(0,0,0,.8);content:"\00a0";pointer-events:none}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{opacity:1;animation:none}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{top:100%;right:50%;margin-top:5px}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se:after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-sw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{right:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne:after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-nw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-w:after{right:100%;bottom:50%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-e:after{bottom:50%;left:100%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline:after{width:250px;width:-webkit-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{right:auto;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.yoast-tooltip-w:after{margin-right:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.yoast-measure{max-width:600px}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{margin:0 10px 0 0;font-size:14px;font-weight:600}.wpseo-premium-popup-title{margin:1em 0!important;padding:0!important;font-size:1.3em!important;font-weight:600!important}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{max-width:100%;height:auto}.select2-container .select2-search--dropdown .select2-search__field{margin:0;padding:0 8px;min-height:30px}.select2-results__option,.select2-search--inline,.select2-selection__choice{margin-bottom:0}.select2-container .select2-search--inline .select2-search__field{margin-top:6px!important;line-height:inherit;min-height:0}.wpseo-admin-page .select2-container .select2-selection--single,.wpseo-metabox .select2-container .select2-selection--single{height:auto}.wpseo-admin-page .select2-container .select2-selection--single .select2-selection__arrow,.wpseo-metabox .select2-container .select2-selection--single .select2-selection__arrow{height:100%}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-settings{margin-bottom:2em;padding-left:220px}.yoast-settings h2{margin-bottom:0;margin-left:-220px}.yoast-settings label{display:inline-block;width:200px;padding-top:4px;padding-right:10px;margin-right:6px;margin-left:-220px;font-size:14px;line-height:1.3;font-weight:600;color:#23282d;vertical-align:top}.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea,.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{margin-top:2em;margin-bottom:.5em}.yoast-settings__textarea--medium{width:100%;max-width:600px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{vertical-align:top;position:relative;top:1px}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 4px 10px 0}.yoast-settings__checkbox+label,.yoast-settings__radio+label{width:auto;margin-left:0;margin-right:0;padding:0;max-width:calc(100% - 25px)}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{margin-top:0;margin-bottom:10px;font-weight:400}.yoast-settings legend{font-size:14px;font-weight:600;color:#23282d}.yoast-settings .description{margin-top:0;font-size:14px}td .wpseo-score-icon{display:inline-block;width:12px;height:12px;margin-left:5px;border-radius:50%;background:#888;line-height:16px;margin-top:3px}.fixed th.column-wpseo-linked,.fixed th.column-wpseo-links,.fixed th.column-wpseo-score,.fixed th.column-wpseo-score-readability{width:3em;padding:0}th.column-wpseo-linked a,th.column-wpseo-links a,th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{overflow:visible;display:inline-block;vertical-align:middle;padding:8px 0}th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{padding:8px 11px}.column-wpseo-links .yoast-tooltip-multiline:after{max-width:160px}.column-wpseo-linked .yoast-tooltip-multiline:after{max-width:170px}.yoast-column-header-has-tooltip{position:relative}.manage-column .yoast-column-header-has-tooltip:before{content:"";display:inline-block;width:20px;height:20px;padding:0;vertical-align:top;text-decoration:none!important;color:#444}.manage-column .yoast-linked-to:before{background:transparent url(../../images/link-out-icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-linked-from:before{background:transparent url(../../images/link-in-icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-column-seo-score:before{background:transparent url(../../images/Yoast_SEO_negative_icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-column-readability:before{background:transparent url(../../images/readability-icon.svg) no-repeat 0 0;background-size:20px}td.column-wpseo-linked,td.column-wpseo-links{word-wrap:normal}@media screen and (max-width:782px){.yoast-settings{padding-left:0}.yoast-settings h2{margin-left:0}.yoast-settings label{width:auto;padding:0;margin-right:0;margin-left:0}.yoast-settings__radio+label,.yoast .yoast-settings__radio{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{display:block;width:100%;margin-top:0;margin-bottom:0;padding:7px 10px;max-width:none;line-height:1.5;box-sizing:border-box}.screen-reader-text.wpseo-score-text{position:static!important;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.contact-premium-support{text-align:center}.contact-premium-support__content{margin:0 auto 1.5em;font-size:.9375rem;line-height:1.4}.contact-premium-support__content:nth-child(2){max-width:610px}.contact-premium-support__content:nth-child(3){max-width:560px}.contact-premium-support .contact-premium-support__button{margin-bottom:48px}.wpseo-premium-description{margin-top:.5em}.wpseo-premium-advantages-list{list-style:disc;padding-left:1.5em}.yoast_help.yoast-help-button{overflow:visible;position:relative;width:20px;height:20px;margin:0;padding:0;border:0;outline:none;color:#72777c;background:transparent;box-shadow:none;vertical-align:top;cursor:pointer}.yoast-section .yoast_help.yoast-help-button{float:right}.help-button-inline .yoast_help.yoast-help-button{margin-top:-4px}.yoast-section .yoast_help.yoast-help-button{margin-top:-44px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-right:6px}.yoast_help .yoast-help-icon:before{position:absolute;top:0;left:0;padding:4px;content:"\f223"}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus .yoast-help-icon:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-help-panel{display:none;clear:both;max-width:30em!important;padding:0 0 1em;font-weight:400;white-space:normal}.wpseo-admin-page .yoast-help-panel{max-width:600px!important}.copy-home-meta-description .yoast-help-panel{max-width:400px!important}.yoast-modal_is-open{overflow:hidden}.yoast-alert .yoast-seo-icon{float:left;margin:20px 10px}.yoast-alert .yoast-seo-icon-wrap{margin:0 0 0 85px}.yoast-button-upsell{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box;min-height:48px;padding:8px 1em;font-size:16px;line-height:1.5;font-family:Arial,sans-serif;color:#000;border-radius:4px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.2);filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));text-decoration:none;background-color:#fec228}.yoast-button-upsell:active,.yoast-button-upsell:focus,.yoast-button-upsell:hover{color:#000;background-color:#f2ae01}.yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 rgba(0,0,0,.2),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-button-upsell:active{-ms-transform:translateY(1px);transform:translateY(1px);box-shadow:none;filter:none}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.yoast-button-upsell:after{display:inline-block;content:"";min-height:32px}}.yoast-button-upsell#wpseo-premium-button{color:#000}.yoast-button-upsell__caret{-ms-flex-negative:0;flex-shrink:0;width:8px;height:16px;margin:0 -2px 0 6px;background:transparent url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M%200%20384%2E662%20V%20127%2E338%20c%200%20%2D17%2E818%2021%2E543%20%2D26%2E741%2034%2E142%20%2D14%2E142%20l%20128%2E662%20128%2E662%20c%207%2E81%207%2E81%207%2E81%2020%2E474%200%2028%2E284%20L%2034%2E142%20398%2E804%20C%2021%2E543%20411%2E404%200%20402%2E48%200%20384%2E662%20Z%22%2F%3E%3C%2Fsvg%3E") 50% no-repeat}.rtl .yoast-button-upsell__caret{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M192%20127%2E338v257%2E324c0%2017%2E818%2D21%2E543%2026%2E741%2D34%2E142%2014%2E142L29%2E196%20270%2E142c%2D7%2E81%2D7%2E81%2D7%2E81%2D20%2E474%200%2D28%2E284l128%2E662%2D128%2E662c12%2E599%2D12%2E6%2034%2E142%2D3%2E676%2034%2E142%2014%2E142z%22%2F%3E%3C%2Fsvg%3E")}body.folded .wpseo-admin-submit-fixed{left:36px}@media screen and (max-width:782px){body.folded .wpseo-admin-submit-fixed{left:0}}.wpseo-admin-submit{z-index:5;display:-ms-flexbox;display:flex;padding:16px 0;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-align:baseline;align-items:baseline;margin:0}.wpseo-admin-submit.wpseo-admin-submit-fixed{padding:16px;position:fixed;bottom:0;left:160px;right:281px;background-color:#fff;max-width:800px;box-shadow:0 1px 8px 1px rgba(0,0,0,.5);margin:0 16px}@media screen and (max-width:1024px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:0}}@media only screen and (max-width:960px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:36px}}@media screen and (max-width:782px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:0;margin:0}}.wpseo-admin-submit p.submit{padding:0;margin:0}.wpseo-admin-submit p.wpseo-message{margin:0 16px 0 0;padding:0;color:#008a00}.yoast-alert-box{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;position:relative;padding:16px;border:1px solid rgba(0,0,0,.2);font-size:14px;font-weight:400;line-height:1.5;margin:16px 0}.yoast-alert-box span.icon{display:block;margin-right:8px}.yoast-alert-box a{color:#004973;text-decoration:underline}.yoast-alert-box__warning{color:#674e00;background:#fff3cd}
 
css/dist/admin-global-1280-rtl.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .wpseo-premium-indicator{width:1px;height:1px;display:inline-block}#adminmenu .wpseo-premium-indicator{margin:-2px 2px -3px 0;color:inherit}.wpseo-premium-indicator svg{height:100%;width:auto;display:none}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{display:none;position:absolute;z-index:1000000;padding:6px 8px 5px;border-radius:3px;opacity:0;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);pointer-events:none;-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{display:none;position:absolute;z-index:1000001;width:0;height:0;border:5px solid transparent;opacity:0;color:rgba(0,0,0,.8);content:"\00a0";pointer-events:none}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{opacity:1;animation:none}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{top:100%;left:50%;margin-top:5px}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{top:auto;left:50%;bottom:-5px;margin-left:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se:after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-sw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{left:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{top:-5px;left:50%;bottom:auto;margin-left:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne:after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-nw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{transform:translateX(-50%)}.yoast-tooltip-w:after{left:100%;bottom:50%;margin-left:5px;transform:translateY(50%)}.yoast-tooltip-w:before{top:50%;bottom:50%;right:-5px;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-e:after{bottom:50%;right:100%;margin-right:5px;transform:translateY(50%)}.yoast-tooltip-e:before{top:50%;left:-5px;bottom:50%;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline:after{width:250px;width:-webkit-max-content;width:max-content;max-width:250px;border-collapse:initial;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{left:auto;right:50%;transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.yoast-tooltip-w:after{margin-left:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.yoast-measure{max-width:600px}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{margin:0 0 0 10px;font-size:14px;font-weight:600}.wpseo-premium-popup-title{margin:1em 0!important;padding:0!important;font-size:1.3em!important;font-weight:600!important}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{max-width:100%;height:auto}.select2-container .select2-search--dropdown .select2-search__field{margin:0;padding:0 8px;min-height:30px}.select2-results__option,.select2-search--inline,.select2-selection__choice{margin-bottom:0}.select2-container .select2-search--inline .select2-search__field{margin-top:6px!important;line-height:inherit;min-height:0}.wpseo-admin-page .select2-container .select2-selection--single,.wpseo-metabox .select2-container .select2-selection--single{height:auto}.wpseo-admin-page .select2-container .select2-selection--single .select2-selection__arrow,.wpseo-metabox .select2-container .select2-selection--single .select2-selection__arrow{height:100%}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-settings{margin-bottom:2em;padding-right:220px}.yoast-settings h2{margin-bottom:0;margin-right:-220px}.yoast-settings label{display:inline-block;width:200px;padding-top:4px;padding-left:10px;margin-left:6px;margin-right:-220px;font-size:14px;line-height:1.3;font-weight:600;color:#23282d;vertical-align:top}.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea,.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{margin-top:2em;margin-bottom:.5em}.yoast-settings__textarea--medium{width:100%;max-width:600px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{vertical-align:top;position:relative;top:1px}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 0 10px 4px}.yoast-settings__checkbox+label,.yoast-settings__radio+label{width:auto;margin-right:0;margin-left:0;padding:0;max-width:calc(100% - 25px)}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{margin-top:0;margin-bottom:10px;font-weight:400}.yoast-settings legend{font-size:14px;font-weight:600;color:#23282d}.yoast-settings .description{margin-top:0;font-size:14px}td .wpseo-score-icon{display:inline-block;width:12px;height:12px;margin-right:5px;border-radius:50%;background:#888;line-height:16px;margin-top:3px}.fixed th.column-wpseo-linked,.fixed th.column-wpseo-links,.fixed th.column-wpseo-score,.fixed th.column-wpseo-score-readability{width:3em;padding:0}th.column-wpseo-linked a,th.column-wpseo-links a,th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{overflow:visible;display:inline-block;vertical-align:middle;padding:8px 0}th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{padding:8px 11px}.column-wpseo-links .yoast-tooltip-multiline:after{max-width:160px}.column-wpseo-linked .yoast-tooltip-multiline:after{max-width:170px}.yoast-column-header-has-tooltip{position:relative}.manage-column .yoast-column-header-has-tooltip:before{content:"";display:inline-block;width:20px;height:20px;padding:0;vertical-align:top;text-decoration:none!important;color:#444}.manage-column .yoast-linked-to:before{background:transparent url(../../images/link-out-icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-linked-from:before{background:transparent url(../../images/link-in-icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-column-seo-score:before{background:transparent url(../../images/Yoast_SEO_negative_icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-column-readability:before{background:transparent url(../../images/readability-icon.svg) no-repeat 100% 0;background-size:20px}td.column-wpseo-linked,td.column-wpseo-links{word-wrap:normal}@media screen and (max-width:782px){.yoast-settings{padding-right:0}.yoast-settings h2{margin-right:0}.yoast-settings label{width:auto;padding:0;margin-left:0;margin-right:0}.yoast-settings__radio+label,.yoast .yoast-settings__radio{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{display:block;width:100%;margin-top:0;margin-bottom:0;padding:7px 10px;max-width:none;line-height:1.5;box-sizing:border-box}.screen-reader-text.wpseo-score-text{position:static!important;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.contact-premium-support{text-align:center}.contact-premium-support__content{margin:0 auto 1.5em;font-size:.9375rem;line-height:1.4}.contact-premium-support__content:nth-child(2){max-width:610px}.contact-premium-support__content:nth-child(3){max-width:560px}.contact-premium-support .contact-premium-support__button{margin-bottom:48px}.wpseo-premium-description{margin-top:.5em}.wpseo-premium-advantages-list{list-style:disc;padding-right:1.5em}.yoast_help.yoast-help-button{position:relative;width:20px;height:20px;margin:0;padding:0;border:0;outline:none;color:#72777c;background:transparent;box-shadow:none;vertical-align:top;cursor:pointer}.yoast-section .yoast_help.yoast-help-button{float:left}.help-button-inline .yoast_help.yoast-help-button{margin-top:-4px}.yoast-section .yoast_help.yoast-help-button{margin-top:-44px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-left:6px}.yoast_help .yoast-help-icon:before{position:absolute;top:0;right:0;padding:4px;content:"\f223"}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus .yoast-help-icon:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-help-panel{display:none;clear:both;max-width:30em!important;padding:0 0 1em;font-weight:400;white-space:normal}.wpseo-admin-page .yoast-help-panel{max-width:600px!important}.copy-home-meta-description .yoast-help-panel{max-width:400px!important}.yoast-modal_is-open{overflow:hidden}.yoast-alert .yoast-seo-icon{float:right;margin:20px 10px}.yoast-alert .yoast-seo-icon-wrap{margin:0 85px 0 0}.yoast-button-upsell{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:48px;padding:8px 1em;font-size:16px;line-height:1.5;font-family:Arial,sans-serif;color:#000;border-radius:4px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.2);filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));text-decoration:none;background-color:#fec228}.yoast-button-upsell:active,.yoast-button-upsell:focus,.yoast-button-upsell:hover{color:#000;background-color:#f2ae01}.yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 rgba(0,0,0,.2),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-button-upsell:active{transform:translateY(1px);box-shadow:none;filter:none}.yoast-button-upsell#wpseo-premium-button{color:#000}.yoast-button-upsell__caret{flex-shrink:0;width:8px;height:16px;margin:0 6px 0 -2px;background:transparent url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M%200%20384%2E662%20V%20127%2E338%20c%200%20%2D17%2E818%2021%2E543%20%2D26%2E741%2034%2E142%20%2D14%2E142%20l%20128%2E662%20128%2E662%20c%207%2E81%207%2E81%207%2E81%2020%2E474%200%2028%2E284%20L%2034%2E142%20398%2E804%20C%2021%2E543%20411%2E404%200%20402%2E48%200%20384%2E662%20Z%22%2F%3E%3C%2Fsvg%3E") 50% no-repeat}.rtl .yoast-button-upsell__caret{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M192%20127%2E338v257%2E324c0%2017%2E818%2D21%2E543%2026%2E741%2D34%2E142%2014%2E142L29%2E196%20270%2E142c%2D7%2E81%2D7%2E81%2D7%2E81%2D20%2E474%200%2D28%2E284l128%2E662%2D128%2E662c12%2E599%2D12%2E6%2034%2E142%2D3%2E676%2034%2E142%2014%2E142z%22%2F%3E%3C%2Fsvg%3E")}body.folded .wpseo-admin-submit-fixed{right:36px}@media screen and (max-width:782px){body.folded .wpseo-admin-submit-fixed{right:0}}.wpseo-admin-submit{z-index:5;display:flex;padding:16px 0;justify-content:flex-start;align-items:baseline;margin:0}.wpseo-admin-submit.wpseo-admin-submit-fixed{padding:16px;position:fixed;bottom:0;right:160px;left:281px;background-color:#fff;max-width:800px;box-shadow:0 1px 8px 1px rgba(0,0,0,.5);margin:0 16px}@media screen and (max-width:1024px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:0}}@media only screen and (max-width:960px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:36px}}@media screen and (max-width:782px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:0;margin:0}}.wpseo-admin-submit p.submit{padding:0;margin:0}.wpseo-admin-submit p.wpseo-message{margin:0 0 0 16px;padding:0;color:#008a00}.yoast-alert-box{display:flex;align-items:baseline;position:relative;padding:16px;border:1px solid rgba(0,0,0,.2);font-size:14px;font-weight:400;line-height:1.5;margin:16px 0}.yoast-alert-box span.icon{display:block;margin-left:8px}.yoast-alert-box a{color:#004973;text-decoration:underline}.yoast-alert-box__warning{color:#674e00;background:#fff3cd}
css/dist/admin-global-1280.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .wpseo-premium-indicator{width:1px;height:1px;display:inline-block}#adminmenu .wpseo-premium-indicator{margin:-2px 0 -3px 2px;color:inherit}.wpseo-premium-indicator svg{height:100%;width:auto;display:none}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{display:none;position:absolute;z-index:1000000;padding:6px 8px 5px;border-radius:3px;opacity:0;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);pointer-events:none;-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{display:none;position:absolute;z-index:1000001;width:0;height:0;border:5px solid transparent;opacity:0;color:rgba(0,0,0,.8);content:"\00a0";pointer-events:none}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{opacity:1;animation:none}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{top:100%;right:50%;margin-top:5px}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se:after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-sw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{right:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne:after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-nw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{transform:translateX(50%)}.yoast-tooltip-w:after{right:100%;bottom:50%;margin-right:5px;transform:translateY(50%)}.yoast-tooltip-w:before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-e:after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.yoast-tooltip-e:before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline:after{width:250px;width:-webkit-max-content;width:max-content;max-width:250px;border-collapse:initial;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{right:auto;left:50%;transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.yoast-tooltip-w:after{margin-right:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.yoast-measure{max-width:600px}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{margin:0 10px 0 0;font-size:14px;font-weight:600}.wpseo-premium-popup-title{margin:1em 0!important;padding:0!important;font-size:1.3em!important;font-weight:600!important}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{max-width:100%;height:auto}.select2-container .select2-search--dropdown .select2-search__field{margin:0;padding:0 8px;min-height:30px}.select2-results__option,.select2-search--inline,.select2-selection__choice{margin-bottom:0}.select2-container .select2-search--inline .select2-search__field{margin-top:6px!important;line-height:inherit;min-height:0}.wpseo-admin-page .select2-container .select2-selection--single,.wpseo-metabox .select2-container .select2-selection--single{height:auto}.wpseo-admin-page .select2-container .select2-selection--single .select2-selection__arrow,.wpseo-metabox .select2-container .select2-selection--single .select2-selection__arrow{height:100%}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-settings{margin-bottom:2em;padding-left:220px}.yoast-settings h2{margin-bottom:0;margin-left:-220px}.yoast-settings label{display:inline-block;width:200px;padding-top:4px;padding-right:10px;margin-right:6px;margin-left:-220px;font-size:14px;line-height:1.3;font-weight:600;color:#23282d;vertical-align:top}.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea,.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{margin-top:2em;margin-bottom:.5em}.yoast-settings__textarea--medium{width:100%;max-width:600px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{vertical-align:top;position:relative;top:1px}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 4px 10px 0}.yoast-settings__checkbox+label,.yoast-settings__radio+label{width:auto;margin-left:0;margin-right:0;padding:0;max-width:calc(100% - 25px)}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{margin-top:0;margin-bottom:10px;font-weight:400}.yoast-settings legend{font-size:14px;font-weight:600;color:#23282d}.yoast-settings .description{margin-top:0;font-size:14px}td .wpseo-score-icon{display:inline-block;width:12px;height:12px;margin-left:5px;border-radius:50%;background:#888;line-height:16px;margin-top:3px}.fixed th.column-wpseo-linked,.fixed th.column-wpseo-links,.fixed th.column-wpseo-score,.fixed th.column-wpseo-score-readability{width:3em;padding:0}th.column-wpseo-linked a,th.column-wpseo-links a,th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{overflow:visible;display:inline-block;vertical-align:middle;padding:8px 0}th.column-wpseo-score-readability .yoast-tooltip,th.column-wpseo-score .yoast-tooltip{padding:8px 11px}.column-wpseo-links .yoast-tooltip-multiline:after{max-width:160px}.column-wpseo-linked .yoast-tooltip-multiline:after{max-width:170px}.yoast-column-header-has-tooltip{position:relative}.manage-column .yoast-column-header-has-tooltip:before{content:"";display:inline-block;width:20px;height:20px;padding:0;vertical-align:top;text-decoration:none!important;color:#444}.manage-column .yoast-linked-to:before{background:transparent url(../../images/link-out-icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-linked-from:before{background:transparent url(../../images/link-in-icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-column-seo-score:before{background:transparent url(../../images/Yoast_SEO_negative_icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-column-readability:before{background:transparent url(../../images/readability-icon.svg) no-repeat 0 0;background-size:20px}td.column-wpseo-linked,td.column-wpseo-links{word-wrap:normal}@media screen and (max-width:782px){.yoast-settings{padding-left:0}.yoast-settings h2{margin-left:0}.yoast-settings label{width:auto;padding:0;margin-right:0;margin-left:0}.yoast-settings__radio+label,.yoast .yoast-settings__radio{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{display:block;width:100%;margin-top:0;margin-bottom:0;padding:7px 10px;max-width:none;line-height:1.5;box-sizing:border-box}.screen-reader-text.wpseo-score-text{position:static!important;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.contact-premium-support{text-align:center}.contact-premium-support__content{margin:0 auto 1.5em;font-size:.9375rem;line-height:1.4}.contact-premium-support__content:nth-child(2){max-width:610px}.contact-premium-support__content:nth-child(3){max-width:560px}.contact-premium-support .contact-premium-support__button{margin-bottom:48px}.wpseo-premium-description{margin-top:.5em}.wpseo-premium-advantages-list{list-style:disc;padding-left:1.5em}.yoast_help.yoast-help-button{position:relative;width:20px;height:20px;margin:0;padding:0;border:0;outline:none;color:#72777c;background:transparent;box-shadow:none;vertical-align:top;cursor:pointer}.yoast-section .yoast_help.yoast-help-button{float:right}.help-button-inline .yoast_help.yoast-help-button{margin-top:-4px}.yoast-section .yoast_help.yoast-help-button{margin-top:-44px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-right:6px}.yoast_help .yoast-help-icon:before{position:absolute;top:0;left:0;padding:4px;content:"\f223"}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus .yoast-help-icon:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-help-panel{display:none;clear:both;max-width:30em!important;padding:0 0 1em;font-weight:400;white-space:normal}.wpseo-admin-page .yoast-help-panel{max-width:600px!important}.copy-home-meta-description .yoast-help-panel{max-width:400px!important}.yoast-modal_is-open{overflow:hidden}.yoast-alert .yoast-seo-icon{float:left;margin:20px 10px}.yoast-alert .yoast-seo-icon-wrap{margin:0 0 0 85px}.yoast-button-upsell{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:48px;padding:8px 1em;font-size:16px;line-height:1.5;font-family:Arial,sans-serif;color:#000;border-radius:4px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.2);filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));text-decoration:none;background-color:#fec228}.yoast-button-upsell:active,.yoast-button-upsell:focus,.yoast-button-upsell:hover{color:#000;background-color:#f2ae01}.yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 rgba(0,0,0,.2),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-button-upsell:active{transform:translateY(1px);box-shadow:none;filter:none}.yoast-button-upsell#wpseo-premium-button{color:#000}.yoast-button-upsell__caret{flex-shrink:0;width:8px;height:16px;margin:0 -2px 0 6px;background:transparent url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M%200%20384%2E662%20V%20127%2E338%20c%200%20%2D17%2E818%2021%2E543%20%2D26%2E741%2034%2E142%20%2D14%2E142%20l%20128%2E662%20128%2E662%20c%207%2E81%207%2E81%207%2E81%2020%2E474%200%2028%2E284%20L%2034%2E142%20398%2E804%20C%2021%2E543%20411%2E404%200%20402%2E48%200%20384%2E662%20Z%22%2F%3E%3C%2Fsvg%3E") 50% no-repeat}.rtl .yoast-button-upsell__caret{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%20192%20512%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M192%20127%2E338v257%2E324c0%2017%2E818%2D21%2E543%2026%2E741%2D34%2E142%2014%2E142L29%2E196%20270%2E142c%2D7%2E81%2D7%2E81%2D7%2E81%2D20%2E474%200%2D28%2E284l128%2E662%2D128%2E662c12%2E599%2D12%2E6%2034%2E142%2D3%2E676%2034%2E142%2014%2E142z%22%2F%3E%3C%2Fsvg%3E")}body.folded .wpseo-admin-submit-fixed{left:36px}@media screen and (max-width:782px){body.folded .wpseo-admin-submit-fixed{left:0}}.wpseo-admin-submit{z-index:5;display:flex;padding:16px 0;justify-content:flex-start;align-items:baseline;margin:0}.wpseo-admin-submit.wpseo-admin-submit-fixed{padding:16px;position:fixed;bottom:0;left:160px;right:281px;background-color:#fff;max-width:800px;box-shadow:0 1px 8px 1px rgba(0,0,0,.5);margin:0 16px}@media screen and (max-width:1024px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:0}}@media only screen and (max-width:960px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:36px}}@media screen and (max-width:782px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:0;margin:0}}.wpseo-admin-submit p.submit{padding:0;margin:0}.wpseo-admin-submit p.wpseo-message{margin:0 16px 0 0;padding:0;color:#008a00}.yoast-alert-box{display:flex;align-items:baseline;position:relative;padding:16px;border:1px solid rgba(0,0,0,.2);font-size:14px;font-weight:400;line-height:1.5;margin:16px 0}.yoast-alert-box span.icon{display:block;margin-right:8px}.yoast-alert-box a{color:#004973;text-decoration:underline}.yoast-alert-box__warning{color:#674e00;background:#fff3cd}
css/dist/{adminbar-1271-rtl.min.css → adminbar-1280-rtl.min.css} RENAMED
File without changes
css/dist/{adminbar-1271.min.css → adminbar-1280.min.css} RENAMED
File without changes
css/dist/alerts-1271-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}.yoast-alert{padding:0 12px;border-right:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-container{position:relative;max-width:1280px;margin:20px 0 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin:0;padding:9px 0 4px;font-size:23px;font-weight:400;line-height:29px}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex;position:relative}.dismiss .dashicons,.restore .dashicons{font-size:20px;width:20px;height:20px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{position:absolute;left:0;width:52px;height:100%;line-height:inherit;padding:0;outline:none;cursor:pointer;background:transparent;border:none;box-shadow:none;border-radius:0}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:transparent}.yoast-alerts .button.dismiss:focus:before,.yoast-alerts .button.restore:focus:before{content:"";display:block;width:32px;height:32px;border-radius:50%;position:absolute;top:50%;right:50%;-ms-transform:translate(50%,-50%);transform:translate(50%,-50%);box-shadow:0 0 0 1px #007cba;outline:2px solid transparent}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px soli