Yoast SEO - Version 12.4

Version Description

Download this release

Release Info

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

Code changes from version 12.3 to 12.4

Files changed (81) hide show
  1. admin/admin-settings-changed-listener.php +1 -1
  2. admin/class-admin-banner.php +67 -0
  3. admin/class-admin-init.php +41 -8
  4. admin/class-admin.php +1 -0
  5. admin/class-config.php +3 -2
  6. admin/class-gutenberg-compatibility.php +2 -2
  7. admin/class-plugin-compatibility.php +6 -0
  8. admin/class-yoast-form.php +5 -2
  9. admin/class-yoast-input-validation.php +16 -14
  10. admin/class-yoast-notification.php +2 -2
  11. admin/config-ui/fields/class-field-success-message.php +4 -4
  12. admin/formatter/class-post-metabox-formatter.php +22 -4
  13. admin/formatter/class-term-metabox-formatter.php +18 -8
  14. admin/import/plugins/class-import-wpseo.php +2 -2
  15. admin/metabox/class-metabox.php +8 -3
  16. admin/notifiers/class-configuration-notifier.php +1 -1
  17. admin/tracking/class-tracking-plugin-data.php +1 -1
  18. admin/tracking/class-tracking.php +2 -2
  19. admin/views/class-yoast-input-select.php +2 -2
  20. admin/views/paper-collapsible.php +18 -6
  21. admin/views/partial-alerts-template.php +7 -1
  22. admin/views/tabs/metas/paper-content/general/knowledge-graph.php +4 -4
  23. admin/views/tabs/social/twitterbox.php +6 -1
  24. config/composer/actions.php +55 -0
  25. config/php-codeshift/remove-vendor-prefixing-array-key-visitor.php +3 -3
  26. config/php-codeshift/remove-vendor-prefixing-codemod.php +7 -6
  27. config/php-codeshift/remove-vendor-prefixing-comment-visitor.php +3 -2
  28. config/php-codeshift/remove-vendor-prefixing-visitor.php +2 -1
  29. css/dist/{admin-global-1230-rtl.min.css → admin-global-1240-rtl.min.css} +1 -1
  30. css/dist/{admin-global-1230.min.css → admin-global-1240.min.css} +1 -1
  31. css/dist/{adminbar-1230-rtl.min.css → adminbar-1240-rtl.min.css} +0 -0
  32. css/dist/{adminbar-1230.min.css → adminbar-1240.min.css} +0 -0
  33. css/dist/{alerts-1230-rtl.min.css → alerts-1240-rtl.min.css} +0 -0
  34. css/dist/{alerts-1230.min.css → alerts-1240.min.css} +0 -0
  35. css/dist/{dashboard-1230-rtl.min.css → dashboard-1240-rtl.min.css} +0 -0
  36. css/dist/{dashboard-1230.min.css → dashboard-1240.min.css} +0 -0
  37. css/dist/{edit-page-1230-rtl.min.css → edit-page-1240-rtl.min.css} +0 -0
  38. css/dist/{edit-page-1230.min.css → edit-page-1240.min.css} +0 -0
  39. css/dist/{featured-image-1230-rtl.min.css → featured-image-1240-rtl.min.css} +0 -0
  40. css/dist/{featured-image-1230.min.css → featured-image-1240.min.css} +0 -0
  41. css/dist/{filter-explanation-1230-rtl.min.css → filter-explanation-1240-rtl.min.css} +0 -0
  42. css/dist/{filter-explanation-1230.min.css → filter-explanation-1240.min.css} +0 -0
  43. css/dist/{inside-editor-1230-rtl.min.css → inside-editor-1240-rtl.min.css} +0 -0
  44. css/dist/{inside-editor-1230.min.css → inside-editor-1240.min.css} +0 -0
  45. css/dist/{metabox-1230-rtl.min.css → metabox-1240-rtl.min.css} +0 -0
  46. css/dist/{metabox-1230.min.css → metabox-1240.min.css} +0 -0
  47. css/dist/{metabox-primary-category-1230-rtl.min.css → metabox-primary-category-1240-rtl.min.css} +0 -0
  48. css/dist/{metabox-primary-category-1230.min.css → metabox-primary-category-1240.min.css} +0 -0
  49. css/dist/{search-appearance-1230-rtl.min.css → search-appearance-1240-rtl.min.css} +0 -0
  50. css/dist/{search-appearance-1230.min.css → search-appearance-1240.min.css} +0 -0
  51. css/dist/{structured-data-blocks-1230-rtl.min.css → structured-data-blocks-1240-rtl.min.css} +0 -0
  52. css/dist/{structured-data-blocks-1230.min.css → structured-data-blocks-1240.min.css} +0 -0
  53. css/dist/{toggle-switch-1230-rtl.min.css → toggle-switch-1240-rtl.min.css} +1 -1
  54. css/dist/{toggle-switch-1230.min.css → toggle-switch-1240.min.css} +1 -1
  55. css/dist/{wpseo-dismissible-1230-rtl.min.css → wpseo-dismissible-1240-rtl.min.css} +0 -0
  56. css/dist/{wpseo-dismissible-1230.min.css → wpseo-dismissible-1240.min.css} +0 -0
  57. css/dist/{yoast-components-1230-rtl.min.css → yoast-components-1240-rtl.min.css} +0 -0
  58. css/dist/{yoast-components-1230.min.css → yoast-components-1240.min.css} +0 -0
  59. css/dist/{yoast-extensions-1230-rtl.min.css → yoast-extensions-1240-rtl.min.css} +0 -0
  60. css/dist/{yoast-extensions-1230.min.css → yoast-extensions-1240.min.css} +0 -0
  61. css/dist/{yst_plugin_tools-1230-rtl.min.css → yst_plugin_tools-1240-rtl.min.css} +0 -0
  62. css/dist/{yst_plugin_tools-1230.min.css → yst_plugin_tools-1240.min.css} +0 -0
  63. css/dist/{yst_seo_score-1230-rtl.min.css → yst_seo_score-1240-rtl.min.css} +0 -0
  64. css/dist/{yst_seo_score-1230.min.css → yst_seo_score-1240.min.css} +0 -0
  65. deprecated/class-yoast-form-fieldset.php +2 -2
  66. frontend/schema/class-schema-faq-questions.php +1 -1
  67. frontend/schema/class-schema-howto.php +1 -1
  68. images/crosshair.svg +1 -0
  69. images/yoasie_banner_bf.gif +0 -0
  70. inc/class-addon-manager.php +97 -73
  71. inc/class-structured-data-blocks.php +2 -1
  72. inc/class-upgrade.php +15 -1
  73. inc/class-wpseo-content-images.php +6 -1
  74. inc/class-wpseo-image-utils.php +40 -7
  75. inc/class-wpseo-utils.php +1 -0
  76. inc/health-check.php +11 -0
  77. inc/options/class-wpseo-option-wpseo.php +3 -0
  78. inc/options/class-wpseo-option.php +6 -7
  79. inc/sitemaps/class-sitemaps.php +4 -4
  80. inc/sitemaps/class-taxonomy-sitemap-provider.php +1 -0
  81. js/dist/{analysis-1230.min.js → analysis-1240.min.js} +3 -3
admin/admin-settings-changed-listener.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * A Wordpress integration that listens for whether the SEO changes have been saved successfully.
10
  */
11
  class WPSEO_Admin_Settings_Changed_Listener implements WPSEO_WordPress_Integration {
12
 
6
  */
7
 
8
  /**
9
+ * A WordPress integration that listens for whether the SEO changes have been saved successfully.
10
  */
11
  class WPSEO_Admin_Settings_Changed_Listener implements WPSEO_WordPress_Integration {
12
 
admin/class-admin-banner.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPSEO plugin file.
4
+ *
5
+ * @package WPSEO\Admin
6
+ */
7
+
8
+ /**
9
+ * Class WPSEO_Admin_Banner.
10
+ */
11
+ class WPSEO_Admin_Banner implements WPSEO_WordPress_Integration {
12
+ /**
13
+ * Registers all hooks to WordPress.
14
+ *
15
+ * @return void
16
+ */
17
+ public function register_hooks() {
18
+ add_action( 'admin_notices', array( $this, 'banner' ) );
19
+ }
20
+
21
+ /**
22
+ * Renders the admin banner.
23
+ */
24
+ public function banner() {
25
+ if ( isset( $_GET['yst_dismiss_bf'] ) ) {
26
+ WPSEO_Options::set( 'bf_banner_2019_dismissed', $_GET['yst_dismiss_bf'] === '1' );
27
+ }
28
+
29
+ if ( ! $this->should_run_banner() ) {
30
+ return;
31
+ }
32
+
33
+ $close_url = add_query_arg( array( 'yst_dismiss_bf' => 1 ) );
34
+
35
+ ?>
36
+ <div class="yoast_bf_sale">
37
+ <a class="close" href="<?php echo esc_url( $close_url ); ?>" aria-label="Dismiss the Yoast Black Friday Banner">X</a>
38
+ <a class="target" href="<?php echo esc_url( WPSEO_Shortlinker::get( 'https://yoa.st/bf-sale-2019' ) ); ?>"></a>
39
+ </div>
40
+ <?php
41
+ }
42
+
43
+ /**
44
+ * Determines whether the banner should be shown or not.
45
+ *
46
+ * @return bool True if it should be shown, false if not.
47
+ */
48
+ private function should_run_banner() {
49
+ if ( WPSEO_Utils::is_yoast_seo_premium() ) {
50
+ return false;
51
+ }
52
+
53
+ if ( WPSEO_Options::get( 'bf_banner_2019_dismissed' ) ) {
54
+ return false;
55
+ }
56
+
57
+ $time = time();
58
+
59
+ // 1574938800 is November 28th 12:00 CET.
60
+ // 1575381600 is December 3rd 15:00 CET.
61
+ if ( $time >= 1574938800 && $time < 1575381600 ) {
62
+ return true;
63
+ }
64
+
65
+ return false;
66
+ }
67
+ }
admin/class-admin-init.php CHANGED
@@ -387,6 +387,29 @@ class WPSEO_Admin_Init {
387
  $notification_center->remove_notification_by_id( 'wpseo-dismiss-unsupported-php' );
388
  }
389
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
390
  /**
391
  * Creates a WordPress upgrade notification in the notification center.
392
  *
@@ -395,13 +418,16 @@ class WPSEO_Admin_Init {
395
  public function wordpress_upgrade_notice() {
396
  global $wp_version;
397
 
398
- $wordpress_less_than_50 = version_compare( $wp_version, '5.0', '<' );
399
- $wordpress_less_than_52 = version_compare( $wp_version, '5.2', '<' );
 
 
 
400
 
401
  $notification_center = Yoast_Notification_Center::get();
402
 
403
  $message = sprintf(
404
- /* translators: %1$s expands to an opening strong tag, %2$s expands to a closing strong tag, %3$s expands to a html break, %4$s expands to Yoast, %5$s expands to Yoast SEO, %6$s expands to 5.2, %7$s expands to 5.3 */
405
  __(
406
  '%1$sUpgrade WordPress to the most recent version%2$s%3$sWe’ve noticed that you’re not on the latest WordPress version, which might cause an issue soon. %4$s (for reasons of security and stability) only supports the current and previous version of WordPress. When the next version of WordPress comes out, that means that we will support WordPress %6$s and %7$s. This means you will not get any updates to %5$s until you update your WordPress, so please make sure to upgrade to the latest WordPress version soon!%3$s%3$s',
407
  'wordpress-seo'
@@ -411,10 +437,10 @@ class WPSEO_Admin_Init {
411
  '<br/>',
412
  'Yoast',
413
  'Yoast SEO',
414
- '5.2',
415
- '5.3'
416
  );
417
- if ( $wordpress_less_than_50 ) {
418
  $message .= sprintf(
419
  /* translators: %1$s expands to Yoast SEO, %2$s expands to 5.0 */
420
  __(
@@ -433,7 +459,7 @@ class WPSEO_Admin_Init {
433
  'wordpress-seo'
434
  ),
435
  '<a href="' . WPSEO_Shortlinker::get( 'https://yoa.st/old-wp-support' ) . '" target="_blank" rel="nofollow">',
436
- '</a>'
437
  );
438
 
439
  $notification = new Yoast_Notification(
@@ -444,7 +470,13 @@ class WPSEO_Admin_Init {
444
  )
445
  );
446
 
447
- if ( $wordpress_less_than_52 ) {
 
 
 
 
 
 
448
  $notification_center->add_notification( $notification );
449
  return;
450
  }
@@ -686,6 +718,7 @@ class WPSEO_Admin_Init {
686
  }
687
 
688
  /* ********************* DEPRECATED METHODS ********************* */
 
689
  /**
690
  * Add an alert if outdated versions of Yoast SEO plugins are running.
691
  *
387
  $notification_center->remove_notification_by_id( 'wpseo-dismiss-unsupported-php' );
388
  }
389
 
390
+ /**
391
+ * Gets the latest released major WordPress version from the WordPress stable-check api.
392
+ *
393
+ * @return float The latest released major WordPress version. 0 The stable-check api doesn't respond.
394
+ */
395
+ private function get_latest_major_wordpress_version() {
396
+ $core_updates = get_core_updates( array( 'dismissed' => true ) );
397
+
398
+ if ( $core_updates === false ) {
399
+ return 0;
400
+ }
401
+
402
+ $wp_version_latest = get_bloginfo( 'version' );
403
+ foreach ( $core_updates as $update ) {
404
+ if ( $update->response === 'upgrade' && version_compare( $update->version, $wp_version_latest, '>' ) ) {
405
+ $wp_version_latest = $update->version;
406
+ }
407
+ }
408
+
409
+ // Strip the patch version and convert to a float.
410
+ return (float) $wp_version_latest;
411
+ }
412
+
413
  /**
414
  * Creates a WordPress upgrade notification in the notification center.
415
  *
418
  public function wordpress_upgrade_notice() {
419
  global $wp_version;
420
 
421
+ $latest_major_wp_version = number_format( $this->get_latest_major_wordpress_version(), 1 );
422
+ $next_major_wp_version = number_format( ( $latest_major_wp_version + 0.1 ), 1 );
423
+
424
+ $wp_less_than_50 = version_compare( $wp_version, '5.0', '<' );
425
+ $wp_less_than_latest_version = version_compare( $wp_version, $latest_major_wp_version, '<' );
426
 
427
  $notification_center = Yoast_Notification_Center::get();
428
 
429
  $message = sprintf(
430
+ /* translators: %1$s expands to an opening strong tag, %2$s expands to a closing strong tag, %3$s expands to a html break, %4$s expands to Yoast, %5$s expands to Yoast SEO, %6$s expands to the latest major released WP version, %7$s expands to the next major WP release version */
431
  __(
432
  '%1$sUpgrade WordPress to the most recent version%2$s%3$sWe’ve noticed that you’re not on the latest WordPress version, which might cause an issue soon. %4$s (for reasons of security and stability) only supports the current and previous version of WordPress. When the next version of WordPress comes out, that means that we will support WordPress %6$s and %7$s. This means you will not get any updates to %5$s until you update your WordPress, so please make sure to upgrade to the latest WordPress version soon!%3$s%3$s',
433
  'wordpress-seo'
437
  '<br/>',
438
  'Yoast',
439
  'Yoast SEO',
440
+ $latest_major_wp_version,
441
+ $next_major_wp_version
442
  );
443
+ if ( $wp_less_than_50 ) {
444
  $message .= sprintf(
445
  /* translators: %1$s expands to Yoast SEO, %2$s expands to 5.0 */
446
  __(
459
  'wordpress-seo'
460
  ),
461
  '<a href="' . WPSEO_Shortlinker::get( 'https://yoa.st/old-wp-support' ) . '" target="_blank" rel="nofollow">',
462
+ WPSEO_Admin_Utils::get_new_tab_message() . '</a>'
463
  );
464
 
465
  $notification = new Yoast_Notification(
470
  )
471
  );
472
 
473
+ if ( $wp_less_than_latest_version ) {
474
+ // If the latest WordPress version is not known, do not initiate the WordPress upgrade notice.
475
+ if ( $this->get_latest_major_wordpress_version() === 0 ) {
476
+ $notification_center->remove_notification( $notification );
477
+ return;
478
+ }
479
+
480
  $notification_center->add_notification( $notification );
481
  return;
482
  }
718
  }
719
 
720
  /* ********************* DEPRECATED METHODS ********************* */
721
+
722
  /**
723
  * Add an alert if outdated versions of Yoast SEO plugins are running.
724
  *
admin/class-admin.php CHANGED
@@ -113,6 +113,7 @@ class WPSEO_Admin {
113
  $integrations[] = new WPSEO_Schema_Person_Upgrade_Notification();
114
  $integrations[] = new WPSEO_Tracking( 'https://tracking.yoast.com/stats', ( WEEK_IN_SECONDS * 2 ) );
115
  $integrations[] = new WPSEO_Admin_Settings_Changed_Listener();
 
116
 
117
  $integrations = array_merge(
118
  $integrations,
113
  $integrations[] = new WPSEO_Schema_Person_Upgrade_Notification();
114
  $integrations[] = new WPSEO_Tracking( 'https://tracking.yoast.com/stats', ( WEEK_IN_SECONDS * 2 ) );
115
  $integrations[] = new WPSEO_Admin_Settings_Changed_Listener();
116
+ $integrations[] = new WPSEO_Admin_Banner();
117
 
118
  $integrations = array_merge(
119
  $integrations,
admin/class-config.php CHANGED
@@ -137,13 +137,14 @@ class WPSEO_Admin_Pages {
137
  * @return array The search appearance variables.
138
  */
139
  public function localize_search_appearance_script() {
140
- $search_appearance_l10n = array(
141
  'isRtl' => is_rtl(),
142
  'userEditUrl' => add_query_arg( 'user_id', '{user_id}', admin_url( 'user-edit.php' ) ),
143
  'brushstrokeBackgroundURL' => plugins_url( 'images/brushstroke_background.svg', WPSEO_FILE ),
144
  'showLocalSEOUpsell' => $this->should_show_local_seo_upsell(),
145
  'localSEOUpsellURL' => WPSEO_Shortlinker::get( 'https://yoa.st/3mp' ),
146
  );
 
147
  $search_appearance_l10n['knowledgeGraphCompanyInfoMissing'] = WPSEO_Language_Utils::get_knowledge_graph_company_info_missing_l10n();
148
 
149
  return $search_appearance_l10n;
@@ -162,7 +163,7 @@ class WPSEO_Admin_Pages {
162
  $addon_manager = new WPSEO_Addon_Manager();
163
 
164
  return ! WPSEO_Utils::is_yoast_seo_premium()
165
- && ! $addon_manager->has_valid_subscription( WPSEO_Addon_Manager::LOCAL_SLUG );
166
  }
167
 
168
  /**
137
  * @return array The search appearance variables.
138
  */
139
  public function localize_search_appearance_script() {
140
+ $search_appearance_l10n = array(
141
  'isRtl' => is_rtl(),
142
  'userEditUrl' => add_query_arg( 'user_id', '{user_id}', admin_url( 'user-edit.php' ) ),
143
  'brushstrokeBackgroundURL' => plugins_url( 'images/brushstroke_background.svg', WPSEO_FILE ),
144
  'showLocalSEOUpsell' => $this->should_show_local_seo_upsell(),
145
  'localSEOUpsellURL' => WPSEO_Shortlinker::get( 'https://yoa.st/3mp' ),
146
  );
147
+
148
  $search_appearance_l10n['knowledgeGraphCompanyInfoMissing'] = WPSEO_Language_Utils::get_knowledge_graph_company_info_missing_l10n();
149
 
150
  return $search_appearance_l10n;
163
  $addon_manager = new WPSEO_Addon_Manager();
164
 
165
  return ! WPSEO_Utils::is_yoast_seo_premium()
166
+ && ! ( defined( 'WPSEO_LOCAL_FILE' ) );
167
  }
168
 
169
  /**
admin/class-gutenberg-compatibility.php CHANGED
@@ -15,14 +15,14 @@ class WPSEO_Gutenberg_Compatibility {
15
  *
16
  * @var string
17
  */
18
- const CURRENT_RELEASE = '6.6.0';
19
 
20
  /**
21
  * The minimally supported version of Gutenberg by the plugin.
22
  *
23
  * @var string
24
  */
25
- const MINIMUM_SUPPORTED = '6.6.0';
26
 
27
  /**
28
  * Holds the current version.
15
  *
16
  * @var string
17
  */
18
+ const CURRENT_RELEASE = '6.7.0';
19
 
20
  /**
21
  * The minimally supported version of Gutenberg by the plugin.
22
  *
23
  * @var string
24
  */
25
+ const MINIMUM_SUPPORTED = '6.7.0';
26
 
27
  /**
28
  * Holds the current version.
admin/class-plugin-compatibility.php CHANGED
@@ -38,6 +38,7 @@ class WPSEO_Plugin_Compatibility {
38
  * WPSEO_Plugin_Compatibility constructor.
39
  *
40
  * @deprecated 12.3
 
41
  *
42
  * @param string $version The version to check against.
43
  * @param null|class $availability_checker The checker to use.
@@ -55,6 +56,7 @@ class WPSEO_Plugin_Compatibility {
55
  * Retrieves the availability checker.
56
  *
57
  * @deprecated 12.3
 
58
  *
59
  * @param null|object $checker The checker to set.
60
  *
@@ -75,6 +77,7 @@ class WPSEO_Plugin_Compatibility {
75
  * Wraps the availability checker's get_installed_plugins method.
76
  *
77
  * @deprecated 12.3
 
78
  *
79
  * @return array Array containing all the installed plugins.
80
  */
@@ -88,6 +91,7 @@ class WPSEO_Plugin_Compatibility {
88
  * Creates a list of installed plugins and whether or not they are compatible.
89
  *
90
  * @deprecated 12.3
 
91
  *
92
  * @return array Array containing the installed plugins and compatibility.
93
  */
@@ -106,6 +110,7 @@ class WPSEO_Plugin_Compatibility {
106
  * Checks whether or not a plugin is compatible.
107
  *
108
  * @deprecated 12.3
 
109
  *
110
  * @param string $plugin The plugin to look for and match.
111
  *
@@ -129,6 +134,7 @@ class WPSEO_Plugin_Compatibility {
129
  * Gets the major/minor version of the plugin for easier comparing.
130
  *
131
  * @deprecated 12.3
 
132
  *
133
  * @param string $version The version to trim.
134
  *
38
  * WPSEO_Plugin_Compatibility constructor.
39
  *
40
  * @deprecated 12.3
41
+ * @codeCoverageIgnore
42
  *
43
  * @param string $version The version to check against.
44
  * @param null|class $availability_checker The checker to use.
56
  * Retrieves the availability checker.
57
  *
58
  * @deprecated 12.3
59
+ * @codeCoverageIgnore
60
  *
61
  * @param null|object $checker The checker to set.
62
  *
77
  * Wraps the availability checker's get_installed_plugins method.
78
  *
79
  * @deprecated 12.3
80
+ * @codeCoverageIgnore
81
  *
82
  * @return array Array containing all the installed plugins.
83
  */
91
  * Creates a list of installed plugins and whether or not they are compatible.
92
  *
93
  * @deprecated 12.3
94
+ * @codeCoverageIgnore
95
  *
96
  * @return array Array containing the installed plugins and compatibility.
97
  */
110
  * Checks whether or not a plugin is compatible.
111
  *
112
  * @deprecated 12.3
113
+ * @codeCoverageIgnore
114
  *
115
  * @param string $plugin The plugin to look for and match.
116
  *
134
  * Gets the major/minor version of the plugin for easier comparing.
135
  *
136
  * @deprecated 12.3
137
+ * @codeCoverageIgnore
138
  *
139
  * @param string $version The version to trim.
140
  *
admin/class-yoast-form.php CHANGED
@@ -304,8 +304,9 @@ class Yoast_Form {
304
  * @param array $buttons Array of two visual labels for the buttons (defaults Disabled/Enabled).
305
  * @param bool $reverse Reverse order of buttons (default true).
306
  * @param string $help Inline Help that will be printed out before the visible toggles text.
 
307
  */
308
- public function light_switch( $var, $label, $buttons = array(), $reverse = true, $help = '' ) {
309
 
310
  if ( ! isset( $this->options[ $var ] ) ) {
311
  $this->options[ $var ] = false;
@@ -332,8 +333,10 @@ class Yoast_Form {
332
 
333
  $help_class = ! empty( $help ) ? ' switch-container__has-help' : '';
334
 
 
 
335
  echo '<div class="switch-container', $help_class, '">',
336
- '<span class="switch-light-visual-label" id="', esc_attr( $var . '-label' ), '">', esc_html( $label ), '</span>' . $help,
337
  '<label class="', $class, '"><b class="switch-yoast-seo-jaws-a11y">&nbsp;</b>',
338
  '<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 ), '/>',
339
  '<span aria-hidden="true">
304
  * @param array $buttons Array of two visual labels for the buttons (defaults Disabled/Enabled).
305
  * @param bool $reverse Reverse order of buttons (default true).
306
  * @param string $help Inline Help that will be printed out before the visible toggles text.
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 = array(), $reverse = true, $help = '', $strong = false ) {
310
 
311
  if ( ! isset( $this->options[ $var ] ) ) {
312
  $this->options[ $var ] = false;
333
 
334
  $help_class = ! empty( $help ) ? ' switch-container__has-help' : '';
335
 
336
+ $strong_class = ( $strong ) ? ' switch-light-visual-label__strong' : '';
337
+
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">
admin/class-yoast-input-validation.php CHANGED
@@ -12,6 +12,15 @@
12
  */
13
  class Yoast_Input_Validation {
14
 
 
 
 
 
 
 
 
 
 
15
  /**
16
  * Check whether an option group is a Yoast SEO setting.
17
  *
@@ -83,14 +92,6 @@ class Yoast_Input_Validation {
83
  return false;
84
  }
85
 
86
- /**
87
- * The error descriptions.
88
- *
89
- * @since 12.1
90
- * @var array
91
- */
92
- private static $_error_descriptions = array();
93
-
94
  /**
95
  * Sets the error descriptions.
96
  *
@@ -100,7 +101,7 @@ class Yoast_Input_Validation {
100
  * each entry, the key must be the setting variable.
101
  */
102
  public static function set_error_descriptions( $descriptions = array() ) {
103
- $defaults = array(
104
  'baiduverify' => sprintf(
105
  /* translators: %s: additional message with the submitted invalid value */
106
  esc_html__( 'Baidu verification codes can only contain letters, numbers, hyphens, and underscores. %s', 'wordpress-seo' ),
@@ -175,7 +176,7 @@ class Yoast_Input_Validation {
175
 
176
  $descriptions = wp_parse_args( $descriptions, $defaults );
177
 
178
- self::$_error_descriptions = $descriptions;
179
  }
180
 
181
  /**
@@ -186,7 +187,7 @@ class Yoast_Input_Validation {
186
  * @return array An associative array of error descriptions.
187
  */
188
  public static function get_error_descriptions() {
189
- return self::$_error_descriptions;
190
  }
191
 
192
  /**
@@ -198,11 +199,11 @@ class Yoast_Input_Validation {
198
  * @return string The error description.
199
  */
200
  public static function get_error_description( $error_code ) {
201
- if ( ! isset( self::$_error_descriptions[ $error_code ] ) ) {
202
  return null;
203
  }
204
 
205
- return self::$_error_descriptions[ $error_code ];
206
  }
207
 
208
  /**
@@ -311,7 +312,8 @@ class Yoast_Input_Validation {
311
 
312
  if ( $dirty_value ) {
313
  return sprintf(
314
- __( 'The submitted value was: %s', 'wordpress-seo' ),
 
315
  $dirty_value
316
  );
317
  }
12
  */
13
  class Yoast_Input_Validation {
14
 
15
+ /**
16
+ * The error descriptions.
17
+ *
18
+ * @since 12.1
19
+ *
20
+ * @var array
21
+ */
22
+ private static $error_descriptions = array();
23
+
24
  /**
25
  * Check whether an option group is a Yoast SEO setting.
26
  *
92
  return false;
93
  }
94
 
 
 
 
 
 
 
 
 
95
  /**
96
  * Sets the error descriptions.
97
  *
101
  * each entry, the key must be the setting variable.
102
  */
103
  public static function set_error_descriptions( $descriptions = array() ) {
104
+ $defaults = array(
105
  'baiduverify' => sprintf(
106
  /* translators: %s: additional message with the submitted invalid value */
107
  esc_html__( 'Baidu verification codes can only contain letters, numbers, hyphens, and underscores. %s', 'wordpress-seo' ),
176
 
177
  $descriptions = wp_parse_args( $descriptions, $defaults );
178
 
179
+ self::$error_descriptions = $descriptions;
180
  }
181
 
182
  /**
187
  * @return array An associative array of error descriptions.
188
  */
189
  public static function get_error_descriptions() {
190
+ return self::$error_descriptions;
191
  }
192
 
193
  /**
199
  * @return string The error description.
200
  */
201
  public static function get_error_description( $error_code ) {
202
+ if ( ! isset( self::$error_descriptions[ $error_code ] ) ) {
203
  return null;
204
  }
205
 
206
+ return self::$error_descriptions[ $error_code ];
207
  }
208
 
209
  /**
312
 
313
  if ( $dirty_value ) {
314
  return sprintf(
315
+ /* translators: %s: form value as submitted. */
316
+ esc_html__( 'The submitted value was: %s', 'wordpress-seo' ),
317
  $dirty_value
318
  );
319
  }
admin/class-yoast-notification.php CHANGED
@@ -380,7 +380,7 @@ class Yoast_Notification {
380
  * @param string $value Attribute value.
381
  * @param string $key Attribute name.
382
  */
383
- private function parse_attributes( & $value, $key ) {
384
- $value = sprintf( '%s="%s"', $key, esc_attr( $value ) );
385
  }
386
  }
380
  * @param string $value Attribute value.
381
  * @param string $key Attribute name.
382
  */
383
+ private function parse_attributes( &$value, $key ) {
384
+ $value = sprintf( '%s="%s"', sanitize_key( $key ), esc_attr( $value ) );
385
  }
386
  }
admin/config-ui/fields/class-field-success-message.php CHANGED
@@ -27,10 +27,10 @@ class WPSEO_Config_Field_Success_Message extends WPSEO_Config_Field {
27
  $this->set_property( 'href', WPSEO_Shortlinker::get( 'https://yoa.st/3rp' ) );
28
 
29
  /* translators: %1$s expands to Yoast SEO. */
30
- $img_alt = __( '%1$s video tutorial', 'wordpress-seo' );
31
- $img_args = array(
32
- 'src' => plugin_dir_url( WPSEO_FILE ) . ( 'images/Yoast_Academy_video.png' ),
33
- 'alt' => sprintf( $img_alt, 'Yoast SEO' ),
34
  );
35
 
36
  $this->set_property( 'image', $img_args );
27
  $this->set_property( 'href', WPSEO_Shortlinker::get( 'https://yoa.st/3rp' ) );
28
 
29
  /* translators: %1$s expands to Yoast SEO. */
30
+ $img_alt = __( '%1$s video tutorial', 'wordpress-seo' );
31
+ $img_args = array(
32
+ 'src' => plugin_dir_url( WPSEO_FILE ) . ( 'images/Yoast_Academy_video.png' ),
33
+ 'alt' => sprintf( $img_alt, 'Yoast SEO' ),
34
  );
35
 
36
  $this->set_property( 'image', $img_args );
admin/formatter/class-post-metabox-formatter.php CHANGED
@@ -47,14 +47,16 @@ class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
47
  'post_edit_url' => $this->edit_url(),
48
  'base_url' => $this->base_url_for_js(),
49
  'metaDescriptionDate' => '',
 
50
  );
51
 
52
  if ( $this->post instanceof WP_Post ) {
53
  $values_to_set = array(
54
- 'keyword_usage' => $this->get_focus_keyword_usage(),
55
- 'title_template' => $this->get_title_template(),
56
- 'metadesc_template' => $this->get_metadesc_template(),
57
- 'metaDescriptionDate' => $this->get_metadesc_date(),
 
58
  );
59
 
60
  $values = ( $values_to_set + $values );
@@ -63,6 +65,22 @@ class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
63
  return $values;
64
  }
65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  /**
67
  * Returns the url to search for keyword for the post.
68
  *
47
  'post_edit_url' => $this->edit_url(),
48
  'base_url' => $this->base_url_for_js(),
49
  'metaDescriptionDate' => '',
50
+
51
  );
52
 
53
  if ( $this->post instanceof WP_Post ) {
54
  $values_to_set = array(
55
+ 'keyword_usage' => $this->get_focus_keyword_usage(),
56
+ 'title_template' => $this->get_title_template(),
57
+ 'metadesc_template' => $this->get_metadesc_template(),
58
+ 'metaDescriptionDate' => $this->get_metadesc_date(),
59
+ 'social_preview_image_url' => $this->get_image_url(),
60
  );
61
 
62
  $values = ( $values_to_set + $values );
65
  return $values;
66
  }
67
 
68
+ /**
69
+ * Gets the image URL for the post's social preview.
70
+ *
71
+ * @return string|null The image URL for the social preview.
72
+ */
73
+ protected function get_image_url() {
74
+ $post_id = $this->post->ID;
75
+
76
+ if ( has_post_thumbnail( $post_id ) ) {
77
+ $featured_image_info = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'thumbnail' );
78
+ return $featured_image_info[0];
79
+ }
80
+
81
+ return WPSEO_Image_Utils::get_first_usable_content_image_for_post( $post_id );
82
+ }
83
+
84
  /**
85
  * Returns the url to search for keyword for the post.
86
  *
admin/formatter/class-term-metabox-formatter.php CHANGED
@@ -38,8 +38,8 @@ class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
38
  * @param WP_Term|stdClass $term Term.
39
  */
40
  public function __construct( $taxonomy, $term ) {
41
- $this->term = $term;
42
  $this->taxonomy = $taxonomy;
 
43
  }
44
 
45
  /**
@@ -53,19 +53,29 @@ class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
53
  // Todo: a column needs to be added on the termpages to add a filter for the keyword, so this can be used in the focus keyphrase doubles.
54
  if ( is_object( $this->term ) && property_exists( $this->term, 'taxonomy' ) ) {
55
  $values = array(
56
- 'search_url' => $this->search_url(),
57
- 'post_edit_url' => $this->edit_url(),
58
- 'base_url' => $this->base_url_for_js(),
59
- 'taxonomy' => $this->term->taxonomy,
60
- 'keyword_usage' => $this->get_focus_keyword_usage(),
61
- 'title_template' => $this->get_title_template(),
62
- 'metadesc_template' => $this->get_metadesc_template(),
 
63
  );
64
  }
65
 
66
  return $values;
67
  }
68
 
 
 
 
 
 
 
 
 
 
69
  /**
70
  * Returns the url to search for keyword for the taxonomy.
71
  *
38
  * @param WP_Term|stdClass $term Term.
39
  */
40
  public function __construct( $taxonomy, $term ) {
 
41
  $this->taxonomy = $taxonomy;
42
+ $this->term = $term;
43
  }
44
 
45
  /**
53
  // Todo: a column needs to be added on the termpages to add a filter for the keyword, so this can be used in the focus keyphrase doubles.
54
  if ( is_object( $this->term ) && property_exists( $this->term, 'taxonomy' ) ) {
55
  $values = array(
56
+ 'search_url' => $this->search_url(),
57
+ 'post_edit_url' => $this->edit_url(),
58
+ 'base_url' => $this->base_url_for_js(),
59
+ 'taxonomy' => $this->term->taxonomy,
60
+ 'keyword_usage' => $this->get_focus_keyword_usage(),
61
+ 'title_template' => $this->get_title_template(),
62
+ 'metadesc_template' => $this->get_metadesc_template(),
63
+ 'social_preview_image_url' => $this->get_image_url(),
64
  );
65
  }
66
 
67
  return $values;
68
  }
69
 
70
+ /**
71
+ * Gets the image URL for the term's social preview.
72
+ *
73
+ * @return string|null The image URL for the social preview.
74
+ */
75
+ protected function get_image_url() {
76
+ return WPSEO_Image_Utils::get_first_content_image_for_term( $this->term->term_id );
77
+ }
78
+
79
  /**
80
  * Returns the url to search for keyword for the taxonomy.
81
  *
admin/import/plugins/class-import-wpseo.php CHANGED
@@ -213,7 +213,7 @@ class WPSEO_Import_WPSEO extends WPSEO_Plugin_Importer {
213
  *
214
  * @return void
215
  */
216
- private function import_taxonomy_description( & $tax_meta, $taxonomy, $term_id ) {
217
  $description = get_option( 'wpseo_' . $taxonomy . '_' . $term_id, false );
218
  if ( $description !== false ) {
219
  // Import description.
@@ -230,7 +230,7 @@ class WPSEO_Import_WPSEO extends WPSEO_Plugin_Importer {
230
  *
231
  * @return void
232
  */
233
- private function import_taxonomy_robots( & $tax_meta, $taxonomy, $term_id ) {
234
  $wpseo_robots = get_option( 'wpseo_' . $taxonomy . '_' . $term_id . '_robots', false );
235
  if ( $wpseo_robots === false ) {
236
  return;
213
  *
214
  * @return void
215
  */
216
+ private function import_taxonomy_description( &$tax_meta, $taxonomy, $term_id ) {
217
  $description = get_option( 'wpseo_' . $taxonomy . '_' . $term_id, false );
218
  if ( $description !== false ) {
219
  // Import description.
230
  *
231
  * @return void
232
  */
233
+ private function import_taxonomy_robots( &$tax_meta, $taxonomy, $term_id ) {
234
  $wpseo_robots = get_option( 'wpseo_' . $taxonomy . '_' . $term_id . '_robots', false );
235
  if ( $wpseo_robots === false ) {
236
  return;
admin/metabox/class-metabox.php CHANGED
@@ -75,7 +75,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
75
  /* translators: %s expands to the post type name. */
76
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-noindex']['title'] = __( 'Allow search engines to show this %s in search results?', 'wordpress-seo' );
77
  if ( '0' === (string) get_option( 'blog_public' ) ) {
78
- WPSEO_Meta::$meta_fields['advanced']['meta-robots-noindex']['description'] = '<p class="error-message">' . __( 'Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won\'t have an effect.', 'wordpress-seo' ) . '</p>';
79
  }
80
  /* translators: %1$s expands to Yes or No, %2$s expands to the post type name.*/
81
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-noindex']['options']['0'] = __( 'Default for %2$s, currently: %1$s', 'wordpress-seo' );
@@ -747,9 +747,14 @@ class WPSEO_Metabox extends WPSEO_Meta {
747
  return;
748
  }
749
 
750
- if ( get_queried_object_id() !== 0 ) {
 
 
 
 
 
751
  // Enqueue files needed for upload functionality.
752
- wp_enqueue_media( array( 'post' => get_queried_object_id() ) );
753
  }
754
 
755
  $asset_manager->enqueue_style( 'metabox-css' );
75
  /* translators: %s expands to the post type name. */
76
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-noindex']['title'] = __( 'Allow search engines to show this %s in search results?', 'wordpress-seo' );
77
  if ( '0' === (string) get_option( 'blog_public' ) ) {
78
+ WPSEO_Meta::$meta_fields['advanced']['meta-robots-noindex']['description'] = '<span class="error-message">' . __( 'Warning: even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won\'t have an effect.', 'wordpress-seo' ) . '</span>';
79
  }
80
  /* translators: %1$s expands to Yes or No, %2$s expands to the post type name.*/
81
  WPSEO_Meta::$meta_fields['advanced']['meta-robots-noindex']['options']['0'] = __( 'Default for %2$s, currently: %1$s', 'wordpress-seo' );
747
  return;
748
  }
749
 
750
+ $post_id = get_queried_object_id();
751
+ if ( empty( $post_id ) && isset( $_GET['post'] ) ) {
752
+ $post_id = sanitize_text_field( $_GET['post'] );
753
+ }
754
+
755
+ if ( $post_id !== 0 ) {
756
  // Enqueue files needed for upload functionality.
757
+ wp_enqueue_media( array( 'post' => $post_id ) );
758
  }
759
 
760
  $asset_manager->enqueue_style( 'metabox-css' );
admin/notifiers/class-configuration-notifier.php CHANGED
@@ -153,7 +153,7 @@ class WPSEO_Configuration_Notifier implements WPSEO_Listener {
153
  );
154
  $notification .= '<div class="yoast-container__configuration-wizard--content">';
155
  $notification .= sprintf(
156
- '<h3>%s<span class="dashicons dashicons-yes"></span></h3>',
157
  esc_html( $title )
158
  );
159
 
153
  );
154
  $notification .= '<div class="yoast-container__configuration-wizard--content">';
155
  $notification .= sprintf(
156
+ '<h3>%s<span class="dashicons dashicons-yes"></span></h3>',
157
  esc_html( $title )
158
  );
159
 
admin/tracking/class-tracking-plugin-data.php CHANGED
@@ -38,7 +38,7 @@ class WPSEO_Tracking_Plugin_Data implements WPSEO_Collection {
38
 
39
  $plugin_data = array();
40
  foreach ( $plugins as $plugin ) {
41
- $plugin_key = sanitize_title( $plugin['name'] );
42
  $plugin_data[ $plugin_key ] = $plugin;
43
  }
44
 
38
 
39
  $plugin_data = array();
40
  foreach ( $plugins as $plugin ) {
41
+ $plugin_key = sanitize_title( $plugin['name'] );
42
  $plugin_data[ $plugin_key ] = $plugin;
43
  }
44
 
admin/tracking/class-tracking.php CHANGED
@@ -45,8 +45,8 @@ class WPSEO_Tracking implements WPSEO_WordPress_Integration {
45
  * @param int $threshold The limit for the option.
46
  */
47
  public function __construct( $endpoint, $threshold ) {
48
- $this->endpoint = $endpoint;
49
- $this->threshold = $threshold;
50
  $this->current_time = time();
51
  }
52
 
45
  * @param int $threshold The limit for the option.
46
  */
47
  public function __construct( $endpoint, $threshold ) {
48
+ $this->endpoint = $endpoint;
49
+ $this->threshold = $threshold;
50
  $this->current_time = time();
51
  }
52
 
admin/views/class-yoast-input-select.php CHANGED
@@ -134,7 +134,7 @@ class Yoast_Input_Select {
134
  * @param string $value The value of the attribute.
135
  * @param string $attribute The attribute to look for.
136
  */
137
- private function parse_attribute( & $value, $attribute ) {
138
- $value = sprintf( '%s="%s"', esc_html( $attribute ), esc_attr( $value ) );
139
  }
140
  }
134
  * @param string $value The value of the attribute.
135
  * @param string $attribute The attribute to look for.
136
  */
137
+ private function parse_attribute( &$value, $attribute ) {
138
+ $value = sprintf( '%s="%s"', sanitize_key( $attribute ), esc_attr( $value ) );
139
  }
140
  }
admin/views/paper-collapsible.php CHANGED
@@ -27,6 +27,7 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
27
 
28
  <?php
29
  if ( ! empty( $title ) ) {
 
30
  if ( ! empty( $collapsible ) ) {
31
 
32
  $button_id_attr = '';
@@ -35,21 +36,30 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
35
  }
36
 
37
  printf(
38
- '<h2 class="collapsible-header %5$s"><button%4$s type="button" class="toggleable-container-trigger" aria-expanded="%3$s">%1$s <span class="toggleable-container-icon dashicons %2$s" aria-hidden="true"></span></button></h2>',
39
- esc_html( $title ) . $title_after . $help_text->get_button_html(),
40
- $collapsible_config['toggle_icon'],
41
- $collapsible_config['expanded'],
42
  $button_id_attr,
43
- esc_attr( $collapsible_header_class )
 
 
 
 
44
  );
45
  }
46
  else {
47
- printf( '<div class="paper-title"><h2 class="help-button-inline">' . esc_html( $title ) . $title_after . $help_text->get_button_html() . '</h2></div>' );
 
 
 
 
 
48
  }
49
  }
50
  ?>
51
  <?php
52
 
 
53
  echo $help_text->get_panel_html();
54
 
55
  $container_id_attr = '';
@@ -59,8 +69,10 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
59
 
60
  printf(
61
  '<div%1$s class="%2$s">%3$s</div>',
 
62
  $container_id_attr,
63
  esc_attr( 'paper-container ' . $collapsible_config['class'] ),
 
64
  $content
65
  );
66
  ?>
27
 
28
  <?php
29
  if ( ! empty( $title ) ) {
30
+
31
  if ( ! empty( $collapsible ) ) {
32
 
33
  $button_id_attr = '';
36
  }
37
 
38
  printf(
39
+ '<h2 class="%1$s"><button%2$s type="button" class="toggleable-container-trigger" aria-expanded="%3$s">%4$s%5$s <span class="toggleable-container-icon dashicons %6$s" aria-hidden="true"></span></button></h2>',
40
+ esc_attr( 'collapsible-header ' . $collapsible_header_class ),
41
+ // phpcs:ignore WordPress.Security.EscapeOutput -- $button_id_attr is escaped above.
 
42
  $button_id_attr,
43
+ esc_attr( $collapsible_config['expanded'] ),
44
+ // phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is and instance of WPSEO_Admin_Help_Panel, which escapes it's own output.
45
+ $help_text->get_button_html(),
46
+ esc_html( $title ) . wp_kses_post( $title_after ),
47
+ wp_kses_post( $collapsible_config['toggle_icon'] )
48
  );
49
  }
50
  else {
51
+ echo '<div class="paper-title"><h2 class="help-button-inline">',
52
+ esc_html( $title ),
53
+ wp_kses_post( $title_after ),
54
+ // phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is and instance of WPSEO_Admin_Help_Panel, which escapes it's own output.
55
+ $help_text->get_button_html(),
56
+ '</h2></div>';
57
  }
58
  }
59
  ?>
60
  <?php
61
 
62
+ // phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is and instance of WPSEO_Admin_Help_Panel, which escapes it's own output.
63
  echo $help_text->get_panel_html();
64
 
65
  $container_id_attr = '';
69
 
70
  printf(
71
  '<div%1$s class="%2$s">%3$s</div>',
72
+ // phpcs:ignore WordPress.Security.EscapeOutput -- $container_id_attr is escaped above.
73
  $container_id_attr,
74
  esc_attr( 'paper-container ' . $collapsible_config['class'] ),
75
+ // phpcs:ignore WordPress.Security.EscapeOutput -- $content is escaped above.
76
  $content
77
  );
78
  ?>
admin/views/partial-alerts-template.php CHANGED
@@ -52,7 +52,9 @@ if ( ! function_exists( '_yoast_display_alerts' ) ) {
52
  esc_attr( $notification->get_id() ),
53
  esc_attr( $notification->get_nonce() ),
54
  esc_attr( $notification->get_json() ),
 
55
  $notification,
 
56
  $button
57
  );
58
  }
@@ -79,7 +81,10 @@ if ( ! $active ) {
79
  <p><?php echo esc_html( $wpseo_i18n_summary ); ?></p>
80
 
81
  <div class="container yoast-alerts-active" id="<?php echo esc_attr( 'yoast-' . $type . '-active' ); ?>">
82
- <?php echo _yoast_display_alerts( $active, 'active' ); ?>
 
 
 
83
  </div>
84
 
85
  <?php
@@ -96,6 +101,7 @@ if ( ! $active ) {
96
  'collapsible_header_class' => 'yoast-alert',
97
  )
98
  );
 
99
  echo $dismissed_paper->get_output();
100
  }
101
  ?>
52
  esc_attr( $notification->get_id() ),
53
  esc_attr( $notification->get_nonce() ),
54
  esc_attr( $notification->get_json() ),
55
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: Needs to be fixed in https://github.com/Yoast/wordpress-seo-premium/issues/2548.
56
  $notification,
57
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $button is properly escaped.
58
  $button
59
  );
60
  }
81
  <p><?php echo esc_html( $wpseo_i18n_summary ); ?></p>
82
 
83
  <div class="container yoast-alerts-active" id="<?php echo esc_attr( 'yoast-' . $type . '-active' ); ?>">
84
+ <?php
85
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: _yoast_display_alerts is considered a safe function.
86
+ echo _yoast_display_alerts( $active, 'active' );
87
+ ?>
88
  </div>
89
 
90
  <?php
101
  'collapsible_header_class' => 'yoast-alert',
102
  )
103
  );
104
+ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: current usage is considered safe.
105
  echo $dismissed_paper->get_output();
106
  }
107
  ?>
admin/views/tabs/metas/paper-content/general/knowledge-graph.php CHANGED
@@ -47,12 +47,12 @@ $knowledge_graph_help = new WPSEO_Admin_Help_Panel(
47
  <?php
48
 
49
  /*
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; ?>
58
 
47
  <?php
48
 
49
  /*
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; ?>
58
 
admin/views/tabs/social/twitterbox.php CHANGED
@@ -16,7 +16,12 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
16
 
17
  echo '<h2>' . esc_html__( 'Twitter settings', 'wordpress-seo' ) . '</h2>';
18
 
19
- $yform->light_switch( 'twitter', __( 'Add Twitter card meta data', 'wordpress-seo' ) );
 
 
 
 
 
20
 
21
  echo '<p>';
22
  esc_html_e( 'Enable this feature if you want Twitter to display a preview with images and a text excerpt when a link to your site is shared.', 'wordpress-seo' );
16
 
17
  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' ), array(), true, '', true );
25
 
26
  echo '<p>';
27
  esc_html_e( 'Enable this feature if you want Twitter to display a preview with images and a text excerpt when a link to your site is shared.', 'wordpress-seo' );
config/composer/actions.php CHANGED
@@ -62,4 +62,59 @@ class Actions {
62
 
63
  $io->write( 'The dependency injection container has been compiled.' );
64
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
62
 
63
  $io->write( 'The dependency injection container has been compiled.' );
64
  }
65
+
66
+ /**
67
+ * Runs PHPCS on the staged files.
68
+ *
69
+ * Used the composer check-staged-cs command.
70
+ *
71
+ * @codeCoverageIgnore
72
+ *
73
+ * @return void
74
+ */
75
+ public static function check_staged_cs() {
76
+ self::check_cs_for_changed_files( '--staged' );
77
+ }
78
+
79
+ /**
80
+ * Runs PHPCS on the staged files.
81
+ *
82
+ * Used the composer check-staged-cs command.
83
+ *
84
+ * @codeCoverageIgnore
85
+ *
86
+ * @param \Composer\Script\Event $event Composer event that triggered this script.
87
+ *
88
+ * @return void
89
+ */
90
+ public static function check_branch_cs( Event $event ) {
91
+ $args = $event->getArguments();
92
+ if ( empty( $args ) ) {
93
+ self::check_cs_for_changed_files( 'trunk' );
94
+ return;
95
+ }
96
+ self::check_cs_for_changed_files( $args[0] );
97
+ }
98
+
99
+ /**
100
+ * Runs PHPCS on changed files compared to some git reference.
101
+ *
102
+ * @param string $compare The git reference.
103
+ *
104
+ * @codeCoverageIgnore
105
+ *
106
+ * @return void
107
+ */
108
+ private static function check_cs_for_changed_files( $compare ) {
109
+ \exec( 'git diff --name-only --diff-filter=d ' . escapeshellarg( $compare ), $files );
110
+ $files = array_filter( $files, function ( $file ) {
111
+ return substr( $file, -4 ) === '.php';
112
+ } );
113
+ if ( empty( $files ) ) {
114
+ echo 'No files to compare! Exiting.';
115
+ return;
116
+ }
117
+
118
+ \system( 'composer check-cs -- ' . implode( ' ', array_map( 'escapeshellarg', $files ) ) );
119
+ }
120
  }
config/php-codeshift/remove-vendor-prefixing-array-key-visitor.php CHANGED
@@ -7,7 +7,6 @@
7
 
8
  namespace Yoast\WP\Free\PHP_CodeShift;
9
 
10
- use PhpParser\Comment\Doc;
11
  use PhpParser\Node;
12
  use PhpParser\Node\Expr\ArrayItem;
13
  use PhpParser\Node\Scalar\String_;
@@ -17,6 +16,7 @@ use PhpParser\NodeVisitorAbstract;
17
  * Class Vendor_Prefixing_Visitor
18
  */
19
  class Remove_Vendor_Prefixing_Array_Key_Visitor extends NodeVisitorAbstract {
 
20
  /**
21
  * @param \PhpParser\Node $node The node being visited.
22
  *
@@ -27,8 +27,8 @@ class Remove_Vendor_Prefixing_Array_Key_Visitor extends NodeVisitorAbstract {
27
  return $node;
28
  }
29
 
30
- if ( $node->key instanceof String_ && strpos( $node->key->value, YOAST_VENDOR_NS_PREFIX ) !== false ) {
31
- $node->key->value = str_replace( YOAST_VENDOR_NS_PREFIX . '\\', '', $node->key->value );
32
  }
33
 
34
  return $node;
7
 
8
  namespace Yoast\WP\Free\PHP_CodeShift;
9
 
 
10
  use PhpParser\Node;
11
  use PhpParser\Node\Expr\ArrayItem;
12
  use PhpParser\Node\Scalar\String_;
16
  * Class Vendor_Prefixing_Visitor
17
  */
18
  class Remove_Vendor_Prefixing_Array_Key_Visitor extends NodeVisitorAbstract {
19
+
20
  /**
21
  * @param \PhpParser\Node $node The node being visited.
22
  *
27
  return $node;
28
  }
29
 
30
+ if ( $node->key instanceof String_ && \strpos( $node->key->value, \YOAST_VENDOR_NS_PREFIX ) !== false ) {
31
+ $node->key->value = \str_replace( \YOAST_VENDOR_NS_PREFIX . '\\', '', $node->key->value );
32
  }
33
 
34
  return $node;
config/php-codeshift/remove-vendor-prefixing-codemod.php CHANGED
@@ -13,18 +13,19 @@ use Codeshift\AbstractCodemod;
13
  * Class Vendor_Prefixing_Codemod
14
  */
15
  class Remove_Vendor_Prefixing_Codemod extends AbstractCodemod {
 
16
  /**
17
  * Sets up the environment required to do the code modifications.
18
  */
19
  public function init() {
20
- define( 'YoastSEO_Vendor\RUCKUSING_BASE', __DIR__ . '/../../fake-ruckusing' );
21
 
22
- define( 'YOAST_VENDOR_NS_PREFIX', 'YoastSEO_Vendor' );
23
- define( 'YOAST_VENDOR_DEFINE_PREFIX', 'YOASTSEO_VENDOR__' );
24
- define( 'YOAST_VENDOR_PREFIX_DIRECTORY', 'vendor_prefixed' );
25
 
26
- $visitor = new Remove_Vendor_Prefixing_Visitor();
27
- $comment_visitor = new Remove_Vendor_Prefixing_Comment_Visitor();
28
  $array_key_visitor = new Remove_Vendor_Prefixing_Array_Key_Visitor();
29
  $this->addTraversalTransform( $visitor, $comment_visitor, $array_key_visitor );
30
  }
13
  * Class Vendor_Prefixing_Codemod
14
  */
15
  class Remove_Vendor_Prefixing_Codemod extends AbstractCodemod {
16
+
17
  /**
18
  * Sets up the environment required to do the code modifications.
19
  */
20
  public function init() {
21
+ \define( 'YoastSEO_Vendor\RUCKUSING_BASE', __DIR__ . '/../../fake-ruckusing' );
22
 
23
+ \define( 'YOAST_VENDOR_NS_PREFIX', 'YoastSEO_Vendor' );
24
+ \define( 'YOAST_VENDOR_DEFINE_PREFIX', 'YOASTSEO_VENDOR__' );
25
+ \define( 'YOAST_VENDOR_PREFIX_DIRECTORY', 'vendor_prefixed' );
26
 
27
+ $visitor = new Remove_Vendor_Prefixing_Visitor();
28
+ $comment_visitor = new Remove_Vendor_Prefixing_Comment_Visitor();
29
  $array_key_visitor = new Remove_Vendor_Prefixing_Array_Key_Visitor();
30
  $this->addTraversalTransform( $visitor, $comment_visitor, $array_key_visitor );
31
  }
config/php-codeshift/remove-vendor-prefixing-comment-visitor.php CHANGED
@@ -15,6 +15,7 @@ use PhpParser\NodeVisitorAbstract;
15
  * Class Vendor_Prefixing_Visitor
16
  */
17
  class Remove_Vendor_Prefixing_Comment_Visitor extends NodeVisitorAbstract {
 
18
  /**
19
  * @param \PhpParser\Node $node The node being visited.
20
  *
@@ -23,8 +24,8 @@ class Remove_Vendor_Prefixing_Comment_Visitor extends NodeVisitorAbstract {
23
  public function leaveNode( Node $node ) {
24
  $comment = $node->getDocComment();
25
 
26
- if ( $comment && strpos( $comment->getText(), YOAST_VENDOR_NS_PREFIX ) !== false ) {
27
- $updated_text = str_replace( YOAST_VENDOR_NS_PREFIX . '\\', '', $comment->getText() );
28
  $updated_comment = new Doc( $updated_text, $comment->getLine(), $comment->getFilePos(), $comment->getTokenPos() );
29
  $node->setDocComment( $updated_comment );
30
  }
15
  * Class Vendor_Prefixing_Visitor
16
  */
17
  class Remove_Vendor_Prefixing_Comment_Visitor extends NodeVisitorAbstract {
18
+
19
  /**
20
  * @param \PhpParser\Node $node The node being visited.
21
  *
24
  public function leaveNode( Node $node ) {
25
  $comment = $node->getDocComment();
26
 
27
+ if ( $comment && \strpos( $comment->getText(), \YOAST_VENDOR_NS_PREFIX ) !== false ) {
28
+ $updated_text = \str_replace( \YOAST_VENDOR_NS_PREFIX . '\\', '', $comment->getText() );
29
  $updated_comment = new Doc( $updated_text, $comment->getLine(), $comment->getFilePos(), $comment->getTokenPos() );
30
  $node->setDocComment( $updated_comment );
31
  }
config/php-codeshift/remove-vendor-prefixing-visitor.php CHANGED
@@ -15,6 +15,7 @@ use PhpParser\NodeVisitorAbstract;
15
  * Class Vendor_Prefixing_Visitor
16
  */
17
  class Remove_Vendor_Prefixing_Visitor extends NodeVisitorAbstract {
 
18
  /**
19
  * @param \PhpParser\Node $node The node being visited.
20
  *
@@ -25,7 +26,7 @@ class Remove_Vendor_Prefixing_Visitor extends NodeVisitorAbstract {
25
  return $node;
26
  }
27
 
28
- if ( $node->getFirst() !== YOAST_VENDOR_NS_PREFIX ) {
29
  return $node;
30
  }
31
 
15
  * Class Vendor_Prefixing_Visitor
16
  */
17
  class Remove_Vendor_Prefixing_Visitor extends NodeVisitorAbstract {
18
+
19
  /**
20
  * @param \PhpParser\Node $node The node being visited.
21
  *
26
  return $node;
27
  }
28
 
29
+ if ( $node->getFirst() !== \YOAST_VENDOR_NS_PREFIX ) {
30
  return $node;
31
  }
32
 
css/dist/{admin-global-1230-rtl.min.css → admin-global-1240-rtl.min.css} RENAMED
@@ -1 +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{-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-help-center-sub-title,.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-search__field{margin:0}.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}.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}}#yoast-help-center-container{margin:16px 0 24px}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.yoast-help-center-open #sidebar-container{display:none}.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}
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-help-center-sub-title,.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-search__field{margin:0}.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}.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}}#yoast-help-center-container{margin:16px 0 24px}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.yoast-help-center-open #sidebar-container{display:none}.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_bf_sale{position:relative;margin:10px 0 10px 10px;max-width:1012px;height:100px;background:url(../../images/yoasie_banner_bf.gif) no-repeat;background-size:contain}.yoast_bf_sale .close{z-index:1;text-align:center;position:absolute;left:5px;top:5px;background:transparent;color:#000;border-radius:50%;width:17px;font-weight:700;text-decoration:none}.yoast_bf_sale .close:hover{cursor:pointer;color:#fff;background:#000}.yoast_bf_sale .target{display:block;width:100%;height:100%}.yoast_bf_sale .target:hover{cursor:url(../../images/crosshair.svg),pointer}
css/dist/{admin-global-1230.min.css → admin-global-1240.min.css} RENAMED
@@ -1 +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{-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-help-center-sub-title,.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-search__field{margin:0}.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}.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}}#yoast-help-center-container{margin:16px 0 24px}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.yoast-help-center-open #sidebar-container{display:none}.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}
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-help-center-sub-title,.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-search__field{margin:0}.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}.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}}#yoast-help-center-container{margin:16px 0 24px}.react-tabs__tab-panel{max-width:900px;margin:0 auto}.react-tabs__tab-panel li{max-width:none!important}.yoast-help-center-open #sidebar-container{display:none}.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_bf_sale{position:relative;margin:10px 10px 10px 0;max-width:1012px;height:100px;background:url(../../images/yoasie_banner_bf.gif) no-repeat;background-size:contain}.yoast_bf_sale .close{z-index:1;text-align:center;position:absolute;right:5px;top:5px;background:transparent;color:#000;border-radius:50%;width:17px;font-weight:700;text-decoration:none}.yoast_bf_sale .close:hover{cursor:pointer;color:#fff;background:#000}.yoast_bf_sale .target{display:block;width:100%;height:100%}.yoast_bf_sale .target:hover{cursor:url(../../images/crosshair.svg),pointer}
css/dist/{adminbar-1230-rtl.min.css → adminbar-1240-rtl.min.css} RENAMED
File without changes
css/dist/{adminbar-1230.min.css → adminbar-1240.min.css} RENAMED
File without changes
css/dist/{alerts-1230-rtl.min.css → alerts-1240-rtl.min.css} RENAMED
File without changes
css/dist/{alerts-1230.min.css → alerts-1240.min.css} RENAMED
File without changes
css/dist/{dashboard-1230-rtl.min.css → dashboard-1240-rtl.min.css} RENAMED
File without changes
css/dist/{dashboard-1230.min.css → dashboard-1240.min.css} RENAMED
File without changes
css/dist/{edit-page-1230-rtl.min.css → edit-page-1240-rtl.min.css} RENAMED
File without changes
css/dist/{edit-page-1230.min.css → edit-page-1240.min.css} RENAMED
File without changes
css/dist/{featured-image-1230-rtl.min.css → featured-image-1240-rtl.min.css} RENAMED
File without changes
css/dist/{featured-image-1230.min.css → featured-image-1240.min.css} RENAMED
File without changes
css/dist/{filter-explanation-1230-rtl.min.css → filter-explanation-1240-rtl.min.css} RENAMED
File without changes
css/dist/{filter-explanation-1230.min.css → filter-explanation-1240.min.css} RENAMED
File without changes
css/dist/{inside-editor-1230-rtl.min.css → inside-editor-1240-rtl.min.css} RENAMED
File without changes
css/dist/{inside-editor-1230.min.css → inside-editor-1240.min.css} RENAMED
File without changes
css/dist/{metabox-1230-rtl.min.css → metabox-1240-rtl.min.css} RENAMED
File without changes
css/dist/{metabox-1230.min.css → metabox-1240.min.css} RENAMED
File without changes
css/dist/{metabox-primary-category-1230-rtl.min.css → metabox-primary-category-1240-rtl.min.css} RENAMED
File without changes
css/dist/{metabox-primary-category-1230.min.css → metabox-primary-category-1240.min.css} RENAMED
File without changes
css/dist/{search-appearance-1230-rtl.min.css → search-appearance-1240-rtl.min.css} RENAMED
File without changes
css/dist/{search-appearance-1230.min.css → search-appearance-1240.min.css} RENAMED
File without changes
css/dist/{structured-data-blocks-1230-rtl.min.css → structured-data-blocks-1240-rtl.min.css} RENAMED
File without changes
css/dist/{structured-data-blocks-1230.min.css → structured-data-blocks-1240.min.css} RENAMED
File without changes
css/dist/{toggle-switch-1230-rtl.min.css → toggle-switch-1240-rtl.min.css} RENAMED
@@ -1 +1 @@
1
- .switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{position:relative;display:block;padding:0!important}.switch-light:after,.switch-toggle:after{clear:both;content:"";display:table}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light-visual-label,.switch-light>span,.switch-light label,.switch-toggle>span,.switch-toggle label{line-height:2;vertical-align:middle}.switch-light input{position:absolute;opacity:0;z-index:3}.switch-light input[type=radio].disabled,.switch-light input[type=radio].disabled:checked:before,.switch-light input[type=radio]:disabled,.switch-light input[type=radio]:disabled:checked:before{opacity:0}.switch-light input:checked~span a{left:0}.switch-light strong{font-weight:inherit}.switch-light>span{position:relative;min-height:2em;padding:0;text-align:right}.switch-light span span{position:relative;z-index:2;display:block;float:right;width:50%;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-light a{position:absolute;left:50%;top:0;z-index:1;display:block;width:50%;height:100%;padding:0}.switch-toggle input{position:absolute;right:0;opacity:0}.switch-toggle input[type=radio].disabled,.switch-toggle input[type=radio].disabled:checked:before,.switch-toggle input[type=radio]:disabled,.switch-toggle input[type=radio]:disabled:checked:before{opacity:0}.switch-toggle input+label{float:right;padding:0 .5em;margin:0;text-align:center}.switch-toggle input:checked+label{position:relative;z-index:2}.switch-toggle a{position:absolute;top:0;right:0;padding:0;z-index:1;width:10px;height:100%}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{right:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{right:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{right:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{right:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{right:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{right:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{right:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{right:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{right:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{right:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{right:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{right:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{right:83%}.switch-candy a{box-shadow:0 1px 1px rgba(0,0,0,.2),inset 0 1px 1px hsla(0,0%,100%,.45)}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix 1s infinite}}.fieldset-switch-toggle label{float:none}@media only screen{.fieldset-switch-toggle legend{float:right;box-sizing:border-box;min-width:200px;margin:8px 0;padding-left:16px;line-height:2;vertical-align:middle}.fieldset-switch-toggle .disabled-note{clear:both}.switch-container__has-help .switch-light-visual-label,.switch-container__has-help legend{float:right;min-width:0;padding-left:0}.switch-container__has-help .yoast_help.yoast-help-button{margin:8px 4px 0 0}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{width:250px;border:1px solid #ccc;border-radius:.5em;background-color:#dcdcdc;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{clear:both;float:right}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{border:1px solid #b5b5b5;border-radius:.5em;background:#a4286a}.switch-toggle.switch-yoast-seo input.disabled+a,.switch-toggle.switch-yoast-seo input.disabled~a,.switch-toggle.switch-yoast-seo input:disabled+a,.switch-toggle.switch-yoast-seo input:disabled~a{background:#9b9b9b;border:0}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:none}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px rgba(0,115,170,.8)!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{border:1px solid #b5b5b5;background:#a4286a}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;text-shadow:none;font-weight:inherit}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-candy.switch-yoast-seo input+label:after{content:"";display:block;width:100%;height:100%;position:absolute;top:0;right:0;z-index:3}.switch-candy.switch-yoast-seo input:checked+label:after{content:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{right:0}.switch-light.switch-yoast-seo-reverse a{right:50%}.switch-light.switch-yoast-seo-reverse span span{float:left}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{margin-right:0;cursor:pointer}.switch-toggle.switch-yoast-seo input.disabled+label,.switch-toggle.switch-yoast-seo input:disabled+label{cursor:not-allowed}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;overflow:hidden;height:1px;margin-bottom:-1px}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-light-visual-label{display:block;margin:8px 0;font-weight:400;line-height:2}.switch-container{clear:both;margin:0 0 .8em}.switch-container+.switch-container{margin-top:8px}.switch-container+p{margin:0 0 16px}}
1
+ .switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{position:relative;display:block;padding:0!important}.switch-light:after,.switch-toggle:after{clear:both;content:"";display:table}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light-visual-label,.switch-light>span,.switch-light label,.switch-toggle>span,.switch-toggle label{line-height:2;vertical-align:middle}.switch-light input{position:absolute;opacity:0;z-index:3}.switch-light input[type=radio].disabled,.switch-light input[type=radio].disabled:checked:before,.switch-light input[type=radio]:disabled,.switch-light input[type=radio]:disabled:checked:before{opacity:0}.switch-light input:checked~span a{left:0}.switch-light strong{font-weight:inherit}.switch-light>span{position:relative;min-height:2em;padding:0;text-align:right}.switch-light span span{position:relative;z-index:2;display:block;float:right;width:50%;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-light a{position:absolute;left:50%;top:0;z-index:1;display:block;width:50%;height:100%;padding:0}.switch-toggle input{position:absolute;right:0;opacity:0}.switch-toggle input[type=radio].disabled,.switch-toggle input[type=radio].disabled:checked:before,.switch-toggle input[type=radio]:disabled,.switch-toggle input[type=radio]:disabled:checked:before{opacity:0}.switch-toggle input+label{float:right;padding:0 .5em;margin:0;text-align:center}.switch-toggle input:checked+label{position:relative;z-index:2}.switch-toggle a{position:absolute;top:0;right:0;padding:0;z-index:1;width:10px;height:100%}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{right:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{right:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{right:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{right:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{right:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{right:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{right:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{right:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{right:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{right:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{right:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{right:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{right:83%}.switch-candy a{box-shadow:0 1px 1px rgba(0,0,0,.2),inset 0 1px 1px hsla(0,0%,100%,.45)}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix 1s infinite}}.fieldset-switch-toggle label{float:none}@media only screen{.fieldset-switch-toggle legend{float:right;box-sizing:border-box;min-width:200px;margin:8px 0;padding-left:16px;line-height:2;vertical-align:middle}.fieldset-switch-toggle .disabled-note{clear:both}.switch-container__has-help .switch-light-visual-label,.switch-container__has-help legend{float:right;min-width:0;padding-left:0}.switch-container__has-help .yoast_help.yoast-help-button{margin:8px 4px 0 0}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{width:250px;border:1px solid #ccc;border-radius:.5em;background-color:#dcdcdc;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{clear:both;float:right}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{border:1px solid #b5b5b5;border-radius:.5em;background:#a4286a}.switch-toggle.switch-yoast-seo input.disabled+a,.switch-toggle.switch-yoast-seo input.disabled~a,.switch-toggle.switch-yoast-seo input:disabled+a,.switch-toggle.switch-yoast-seo input:disabled~a{background:#9b9b9b;border:0}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:none}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px rgba(0,115,170,.8)!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{border:1px solid #b5b5b5;background:#a4286a}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;text-shadow:none;font-weight:inherit}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-candy.switch-yoast-seo input+label:after{content:"";display:block;width:100%;height:100%;position:absolute;top:0;right:0;z-index:3}.switch-candy.switch-yoast-seo input:checked+label:after{content:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{right:0}.switch-light.switch-yoast-seo-reverse a{right:50%}.switch-light.switch-yoast-seo-reverse span span{float:left}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{margin-right:0;cursor:pointer}.switch-toggle.switch-yoast-seo input.disabled+label,.switch-toggle.switch-yoast-seo input:disabled+label{cursor:not-allowed}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;overflow:hidden;height:1px;margin-bottom:-1px}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-light-visual-label{display:block;margin:8px 0;font-weight:400;line-height:2}.switch-light-visual-label__strong{font-weight:600}.switch-container{clear:both;margin:0 0 .8em}.switch-container+.switch-container{margin-top:8px}.switch-container+p{margin:0 0 16px}}
css/dist/{toggle-switch-1230.min.css → toggle-switch-1240.min.css} RENAMED
@@ -1 +1 @@
1
- .switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{position:relative;display:block;padding:0!important}.switch-light:after,.switch-toggle:after{clear:both;content:"";display:table}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light-visual-label,.switch-light>span,.switch-light label,.switch-toggle>span,.switch-toggle label{line-height:2;vertical-align:middle}.switch-light input{position:absolute;opacity:0;z-index:3}.switch-light input[type=radio].disabled,.switch-light input[type=radio].disabled:checked:before,.switch-light input[type=radio]:disabled,.switch-light input[type=radio]:disabled:checked:before{opacity:0}.switch-light input:checked~span a{right:0}.switch-light strong{font-weight:inherit}.switch-light>span{position:relative;min-height:2em;padding:0;text-align:left}.switch-light span span{position:relative;z-index:2;display:block;float:left;width:50%;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-light a{position:absolute;right:50%;top:0;z-index:1;display:block;width:50%;height:100%;padding:0}.switch-toggle input{position:absolute;left:0;opacity:0}.switch-toggle input[type=radio].disabled,.switch-toggle input[type=radio].disabled:checked:before,.switch-toggle input[type=radio]:disabled,.switch-toggle input[type=radio]:disabled:checked:before{opacity:0}.switch-toggle input+label{float:left;padding:0 .5em;margin:0;text-align:center}.switch-toggle input:checked+label{position:relative;z-index:2}.switch-toggle a{position:absolute;top:0;left:0;padding:0;z-index:1;width:10px;height:100%}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{left:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{left:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{left:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{left:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{left:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{left:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{left:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{left:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{left:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{left:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{left:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{left:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{left:83%}.switch-candy a{box-shadow:0 1px 1px rgba(0,0,0,.2),inset 0 1px 1px hsla(0,0%,100%,.45)}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix 1s infinite}}.fieldset-switch-toggle label{float:none}@media only screen{.fieldset-switch-toggle legend{float:left;box-sizing:border-box;min-width:200px;margin:8px 0;padding-right:16px;line-height:2;vertical-align:middle}.fieldset-switch-toggle .disabled-note{clear:both}.switch-container__has-help .switch-light-visual-label,.switch-container__has-help legend{float:left;min-width:0;padding-right:0}.switch-container__has-help .yoast_help.yoast-help-button{margin:8px 0 0 4px}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{width:250px;border:1px solid #ccc;border-radius:.5em;background-color:#dcdcdc;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{clear:both;float:left}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{border:1px solid #b5b5b5;border-radius:.5em;background:#a4286a}.switch-toggle.switch-yoast-seo input.disabled+a,.switch-toggle.switch-yoast-seo input.disabled~a,.switch-toggle.switch-yoast-seo input:disabled+a,.switch-toggle.switch-yoast-seo input:disabled~a{background:#9b9b9b;border:0}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:none}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px rgba(0,115,170,.8)!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{border:1px solid #b5b5b5;background:#a4286a}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;text-shadow:none;font-weight:inherit}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-candy.switch-yoast-seo input+label:after{content:"";display:block;width:100%;height:100%;position:absolute;top:0;left:0;z-index:3}.switch-candy.switch-yoast-seo input:checked+label:after{content:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{left:0}.switch-light.switch-yoast-seo-reverse a{left:50%}.switch-light.switch-yoast-seo-reverse span span{float:right}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{margin-left:0;cursor:pointer}.switch-toggle.switch-yoast-seo input.disabled+label,.switch-toggle.switch-yoast-seo input:disabled+label{cursor:not-allowed}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;overflow:hidden;height:1px;margin-bottom:-1px}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-light-visual-label{display:block;margin:8px 0;font-weight:400;line-height:2}.switch-container{clear:both;margin:0 0 .8em}.switch-container+.switch-container{margin-top:8px}.switch-container+p{margin:0 0 16px}}
1
+ .switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{position:relative;display:block;padding:0!important}.switch-light:after,.switch-toggle:after{clear:both;content:"";display:table}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light-visual-label,.switch-light>span,.switch-light label,.switch-toggle>span,.switch-toggle label{line-height:2;vertical-align:middle}.switch-light input{position:absolute;opacity:0;z-index:3}.switch-light input[type=radio].disabled,.switch-light input[type=radio].disabled:checked:before,.switch-light input[type=radio]:disabled,.switch-light input[type=radio]:disabled:checked:before{opacity:0}.switch-light input:checked~span a{right:0}.switch-light strong{font-weight:inherit}.switch-light>span{position:relative;min-height:2em;padding:0;text-align:left}.switch-light span span{position:relative;z-index:2;display:block;float:left;width:50%;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-light a{position:absolute;right:50%;top:0;z-index:1;display:block;width:50%;height:100%;padding:0}.switch-toggle input{position:absolute;left:0;opacity:0}.switch-toggle input[type=radio].disabled,.switch-toggle input[type=radio].disabled:checked:before,.switch-toggle input[type=radio]:disabled,.switch-toggle input[type=radio]:disabled:checked:before{opacity:0}.switch-toggle input+label{float:left;padding:0 .5em;margin:0;text-align:center}.switch-toggle input:checked+label{position:relative;z-index:2}.switch-toggle a{position:absolute;top:0;left:0;padding:0;z-index:1;width:10px;height:100%}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{left:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{left:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{left:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{left:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{left:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{left:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{left:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{left:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{left:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{left:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{left:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{left:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{left:83%}.switch-candy a{box-shadow:0 1px 1px rgba(0,0,0,.2),inset 0 1px 1px hsla(0,0%,100%,.45)}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix 1s infinite}}.fieldset-switch-toggle label{float:none}@media only screen{.fieldset-switch-toggle legend{float:left;box-sizing:border-box;min-width:200px;margin:8px 0;padding-right:16px;line-height:2;vertical-align:middle}.fieldset-switch-toggle .disabled-note{clear:both}.switch-container__has-help .switch-light-visual-label,.switch-container__has-help legend{float:left;min-width:0;padding-right:0}.switch-container__has-help .yoast_help.yoast-help-button{margin:8px 0 0 4px}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{width:250px;border:1px solid #ccc;border-radius:.5em;background-color:#dcdcdc;box-shadow:inset 0 2px 4px rgba(0,0,0,.15)}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{clear:both;float:left}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{border:1px solid #b5b5b5;border-radius:.5em;background:#a4286a}.switch-toggle.switch-yoast-seo input.disabled+a,.switch-toggle.switch-yoast-seo input.disabled~a,.switch-toggle.switch-yoast-seo input:disabled+a,.switch-toggle.switch-yoast-seo input:disabled~a{background:#9b9b9b;border:0}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:none}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px rgba(0,115,170,.8)!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{border:1px solid #b5b5b5;background:#a4286a}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;text-shadow:none;font-weight:inherit}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-candy.switch-yoast-seo input+label:after{content:"";display:block;width:100%;height:100%;position:absolute;top:0;left:0;z-index:3}.switch-candy.switch-yoast-seo input:checked+label:after{content:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{left:0}.switch-light.switch-yoast-seo-reverse a{left:50%}.switch-light.switch-yoast-seo-reverse span span{float:right}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{margin-left:0;cursor:pointer}.switch-toggle.switch-yoast-seo input.disabled+label,.switch-toggle.switch-yoast-seo input:disabled+label{cursor:not-allowed}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;overflow:hidden;height:1px;margin-bottom:-1px}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-light-visual-label{display:block;margin:8px 0;font-weight:400;line-height:2}.switch-light-visual-label__strong{font-weight:600}.switch-container{clear:both;margin:0 0 .8em}.switch-container+.switch-container{margin-top:8px}.switch-container+p{margin:0 0 16px}}
css/dist/{wpseo-dismissible-1230-rtl.min.css → wpseo-dismissible-1240-rtl.min.css} RENAMED
File without changes
css/dist/{wpseo-dismissible-1230.min.css → wpseo-dismissible-1240.min.css} RENAMED
File without changes
css/dist/{yoast-components-1230-rtl.min.css → yoast-components-1240-rtl.min.css} RENAMED
File without changes
css/dist/{yoast-components-1230.min.css → yoast-components-1240.min.css} RENAMED
File without changes
css/dist/{yoast-extensions-1230-rtl.min.css → yoast-extensions-1240-rtl.min.css} RENAMED
File without changes
css/dist/{yoast-extensions-1230.min.css → yoast-extensions-1240.min.css} RENAMED
File without changes
css/dist/{yst_plugin_tools-1230-rtl.min.css → yst_plugin_tools-1240-rtl.min.css} RENAMED
File without changes
css/dist/{yst_plugin_tools-1230.min.css → yst_plugin_tools-1240.min.css} RENAMED
File without changes
css/dist/{yst_seo_score-1230-rtl.min.css → yst_seo_score-1240-rtl.min.css} RENAMED
File without changes
css/dist/{yst_seo_score-1230.min.css → yst_seo_score-1240.min.css} RENAMED
File without changes
deprecated/class-yoast-form-fieldset.php CHANGED
@@ -229,7 +229,7 @@ class Yoast_Form_Fieldset implements Yoast_Form_Element {
229
  * @param string $value The value of the attribute.
230
  * @param string $attribute The attribute to look for.
231
  */
232
- private function parse_attribute( & $value, $attribute ) {
233
- $value = sprintf( '%s="%s"', esc_html( $attribute ), esc_attr( $value ) );
234
  }
235
  }
229
  * @param string $value The value of the attribute.
230
  * @param string $attribute The attribute to look for.
231
  */
232
+ private function parse_attribute( &$value, $attribute ) {
233
+ $value = sprintf( '%s="%s"', sanitize_key( $attribute ), esc_attr( $value ) );
234
  }
235
  }
frontend/schema/class-schema-faq-questions.php CHANGED
@@ -80,7 +80,7 @@ class WPSEO_Schema_FAQ_Questions {
80
  '@id' => $this->context->canonical . '#' . $question['id'],
81
  'position' => $this->position ++,
82
  'url' => $this->context->canonical . '#' . $question['id'],
83
- 'name' => strip_tags( $question['jsonQuestion'] ),
84
  'answerCount' => 1,
85
  'acceptedAnswer' => array(
86
  '@type' => 'Answer',
80
  '@id' => $this->context->canonical . '#' . $question['id'],
81
  'position' => $this->position ++,
82
  'url' => $this->context->canonical . '#' . $question['id'],
83
+ 'name' => wp_strip_all_tags( $question['jsonQuestion'] ),
84
  'answerCount' => 1,
85
  'acceptedAnswer' => array(
86
  '@type' => 'Answer',
frontend/schema/class-schema-howto.php CHANGED
@@ -156,7 +156,7 @@ class WPSEO_Schema_HowTo implements WPSEO_Graph_Piece {
156
  );
157
 
158
  $json_text = strip_tags( $step['jsonText'], $this->allowed_json_text_tags );
159
- $json_name = strip_tags( $step['jsonName'] );
160
 
161
  if ( empty( $json_name ) ) {
162
  if ( empty( $step['text'] ) ) {
156
  );
157
 
158
  $json_text = strip_tags( $step['jsonText'], $this->allowed_json_text_tags );
159
+ $json_name = wp_strip_all_tags( $step['jsonName'] );
160
 
161
  if ( empty( $json_name ) ) {
162
  if ( empty( $step['text'] ) ) {
images/crosshair.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="24" height="24" role="img" aria-hidden="true" focusable="false"><circle cx="16" cy="16" r="11.35" fill="none" stroke="#e51a21" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path fill="none" stroke="#e51a21" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M16 .75v10.29m0 9.83v10.29M.79 15.95h10.3m9.82 0h10.3"/></svg>
images/yoasie_banner_bf.gif ADDED
Binary file
inc/class-addon-manager.php CHANGED
@@ -72,6 +72,13 @@ class WPSEO_Addon_Manager {
72
  'local-seo.php' => self::LOCAL_SLUG,
73
  );
74
 
 
 
 
 
 
 
 
75
  /**
76
  * Hooks into WordPress.
77
  *
@@ -84,74 +91,6 @@ class WPSEO_Addon_Manager {
84
  add_filter( 'plugins_api', array( $this, 'get_plugin_information' ), 10, 3 );
85
  }
86
 
87
- /**
88
- * Retrieves the site information.
89
- *
90
- * @return stdClass The site information.
91
- */
92
- public function get_site_information() {
93
- static $site_information = null;
94
-
95
- if ( $site_information === null ) {
96
- $site_information = $this->get_site_information_transient();
97
- }
98
-
99
- if ( $site_information ) {
100
- return $site_information;
101
- }
102
-
103
- $site_information = $this->request_current_sites();
104
- if ( $site_information ) {
105
- $site_information = $this->map_site_information( $site_information );
106
-
107
- $this->set_site_information_transient( $site_information );
108
-
109
- return $site_information;
110
- }
111
-
112
- return $this->get_site_information_default();
113
- }
114
-
115
- /**
116
- * Maps the plugin API response.
117
- *
118
- * @param object $site_information Site information as received from the API.
119
- *
120
- * @return object Mapped site information.
121
- */
122
- public function map_site_information( $site_information ) {
123
- return (object) array(
124
- 'url' => $site_information->url,
125
- 'subscriptions' => array_map( array( $this, 'map_subscription' ), $site_information->subscriptions ),
126
- );
127
- }
128
-
129
- /**
130
- * Maps a plugin subscription.
131
- *
132
- * @param object $subscription Subscription information as received from the API.
133
- *
134
- * @return object Mapped subscription.
135
- */
136
- public function map_subscription( $subscription ) {
137
- // @codingStandardsIgnoreStart
138
- return (object) array(
139
- 'renewal_url' => $subscription->renewalUrl,
140
- 'expiry_date' => $subscription->expiryDate,
141
- 'product' => (object) array(
142
- 'version' => $subscription->product->version,
143
- 'name' => $subscription->product->name,
144
- 'slug' => $subscription->product->slug,
145
- 'last_updated' => $subscription->product->lastUpdated,
146
- 'store_url' => $subscription->product->storeUrl,
147
- // Ternary operator is necessary because download can be undefined.
148
- 'download' => isset( $subscription->product->download ) ? $subscription->product->download : null,
149
- 'changelog' => $subscription->product->changelog,
150
- ),
151
- );
152
- // @codingStandardsIgnoreStop
153
- }
154
-
155
  /**
156
  * Gets the subscriptions for current site.
157
  *
@@ -413,6 +352,8 @@ class WPSEO_Addon_Manager {
413
  /**
414
  * Returns the current page.
415
  *
 
 
416
  * @return string The current page.
417
  */
418
  protected function get_current_page() {
@@ -456,6 +397,31 @@ class WPSEO_Addon_Manager {
456
  return is_plugin_active( $plugin_file );
457
  }
458
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  /**
460
  * Filters the given array by its keys.
461
  *
@@ -481,14 +447,72 @@ class WPSEO_Addon_Manager {
481
  }
482
 
483
  /**
484
- * Returns an object with no subscriptions.
485
  *
486
- * @return stdClass Site information.
 
 
487
  */
488
- protected function get_site_information_default() {
489
  return (object) array(
490
- 'url' => WPSEO_Utils::get_home_url(),
491
- 'subscriptions' => array(),
492
  );
493
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
494
  }
72
  'local-seo.php' => self::LOCAL_SLUG,
73
  );
74
 
75
+ /**
76
+ * Holds the site information data.
77
+ *
78
+ * @var object
79
+ */
80
+ private $site_information;
81
+
82
  /**
83
  * Hooks into WordPress.
84
  *
91
  add_filter( 'plugins_api', array( $this, 'get_plugin_information' ), 10, 3 );
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /**
95
  * Gets the subscriptions for current site.
96
  *
352
  /**
353
  * Returns the current page.
354
  *
355
+ * @codeCoverageIgnore
356
+ *
357
  * @return string The current page.
358
  */
359
  protected function get_current_page() {
397
  return is_plugin_active( $plugin_file );
398
  }
399
 
400
+ /**
401
+ * Returns an object with no subscriptions.
402
+ *
403
+ * @codeCoverageIgnore
404
+ *
405
+ * @return stdClass Site information.
406
+ */
407
+ protected function get_site_information_default() {
408
+ return (object) array(
409
+ 'url' => WPSEO_Utils::get_home_url(),
410
+ 'subscriptions' => array(),
411
+ );
412
+ }
413
+
414
+ /**
415
+ * Checks if there are any installed addons.
416
+ *
417
+ * @return bool True when there are installed Yoast addons.
418
+ */
419
+ protected function has_installed_addons() {
420
+ $installed_addons = $this->get_installed_addons();
421
+
422
+ return ! empty( $installed_addons );
423
+ }
424
+
425
  /**
426
  * Filters the given array by its keys.
427
  *
447
  }
448
 
449
  /**
450
+ * Maps the plugin API response.
451
  *
452
+ * @param object $site_information Site information as received from the API.
453
+ *
454
+ * @return object Mapped site information.
455
  */
456
+ protected function map_site_information( $site_information ) {
457
  return (object) array(
458
+ 'url' => $site_information->url,
459
+ 'subscriptions' => array_map( array( $this, 'map_subscription' ), $site_information->subscriptions ),
460
  );
461
  }
462
+
463
+ /**
464
+ * Maps a plugin subscription.
465
+ *
466
+ * @param object $subscription Subscription information as received from the API.
467
+ *
468
+ * @return object Mapped subscription.
469
+ */
470
+ protected function map_subscription( $subscription ) {
471
+ // @codingStandardsIgnoreStart
472
+ return (object) array(
473
+ 'renewal_url' => $subscription->renewalUrl,
474
+ 'expiry_date' => $subscription->expiryDate,
475
+ 'product' => (object) array(
476
+ 'version' => $subscription->product->version,
477
+ 'name' => $subscription->product->name,
478
+ 'slug' => $subscription->product->slug,
479
+ 'last_updated' => $subscription->product->lastUpdated,
480
+ 'store_url' => $subscription->product->storeUrl,
481
+ // Ternary operator is necessary because download can be undefined.
482
+ 'download' => isset( $subscription->product->download ) ? $subscription->product->download : null,
483
+ 'changelog' => $subscription->product->changelog,
484
+ ),
485
+ );
486
+ // @codingStandardsIgnoreStop
487
+ }
488
+
489
+ /**
490
+ * Retrieves the site information.
491
+ *
492
+ * @return stdClass The site information.
493
+ */
494
+ private function get_site_information() {
495
+ if ( ! $this->has_installed_addons() ) {
496
+ return $this->get_site_information_default();
497
+ }
498
+
499
+ if ( $this->site_information === null ) {
500
+ $this->site_information = $this->get_site_information_transient();
501
+ }
502
+
503
+ if ( $this->site_information ) {
504
+ return $this->site_information;
505
+ }
506
+
507
+ $this->site_information = $this->request_current_sites();
508
+ if ( $this->site_information ) {
509
+ $this->site_information = $this->map_site_information( $this->site_information );
510
+
511
+ $this->set_site_information_transient( $this->site_information );
512
+
513
+ return $this->site_information;
514
+ }
515
+
516
+ return $this->get_site_information_default();
517
+ }
518
  }
inc/class-structured-data-blocks.php CHANGED
@@ -9,6 +9,7 @@
9
  * Class to load assets required for structured data blocks.
10
  */
11
  class WPSEO_Structured_Data_Blocks implements WPSEO_WordPress_Integration {
 
12
  /**
13
  * An instance of the WPSEO_Admin_Asset_Manager class.
14
  *
@@ -68,7 +69,7 @@ class WPSEO_Structured_Data_Blocks implements WPSEO_WordPress_Integration {
68
  $categories[] = array(
69
  'slug' => 'yoast-structured-data-blocks',
70
  'title' => sprintf(
71
- /* translators: %1$s expands to Yoast. */
72
  __( '%1$s Structured Data Blocks', 'wordpress-seo' ),
73
  'Yoast'
74
  ),
9
  * Class to load assets required for structured data blocks.
10
  */
11
  class WPSEO_Structured_Data_Blocks implements WPSEO_WordPress_Integration {
12
+
13
  /**
14
  * An instance of the WPSEO_Admin_Asset_Manager class.
15
  *
69
  $categories[] = array(
70
  'slug' => 'yoast-structured-data-blocks',
71
  'title' => sprintf(
72
+ /* translators: %1$s expands to Yoast. */
73
  __( '%1$s Structured Data Blocks', 'wordpress-seo' ),
74
  'Yoast'
75
  ),
inc/class-upgrade.php CHANGED
@@ -141,6 +141,10 @@ class WPSEO_Upgrade {
141
  $this->upgrade_123();
142
  }
143
 
 
 
 
 
144
  // Since 3.7.
145
  $upsell_notice = new WPSEO_Product_Upsell_Notice();
146
  $upsell_notice->set_upgrade_notice();
@@ -691,6 +695,8 @@ class WPSEO_Upgrade {
691
  }
692
 
693
  /**
 
 
694
  * Removes the about notice when its still in the database.
695
  */
696
  private function upgrade_123() {
@@ -706,10 +712,18 @@ class WPSEO_Upgrade {
706
  $center = Yoast_Notification_Center::get();
707
  foreach ( $plugins as $plugin ) {
708
  $center->remove_notification_by_id( 'wpseo-outdated-yoast-seo-plugin-' . $plugin );
709
-
710
  }
711
  }
712
 
 
 
 
 
 
 
 
 
 
713
  /**
714
  * Removes all notifications saved in the database under 'wp_yoast_notifications'.
715
  *
141
  $this->upgrade_123();
142
  }
143
 
144
+ if ( version_compare( $version, '12.4-RC0', '<' ) ) {
145
+ $this->upgrade_124();
146
+ }
147
+
148
  // Since 3.7.
149
  $upsell_notice = new WPSEO_Product_Upsell_Notice();
150
  $upsell_notice->set_upgrade_notice();
695
  }
696
 
697
  /**
698
+ * Performs the 12.3 upgrade.
699
+ *
700
  * Removes the about notice when its still in the database.
701
  */
702
  private function upgrade_123() {
712
  $center = Yoast_Notification_Center::get();
713
  foreach ( $plugins as $plugin ) {
714
  $center->remove_notification_by_id( 'wpseo-outdated-yoast-seo-plugin-' . $plugin );
 
715
  }
716
  }
717
 
718
+ /**
719
+ * Performs the 12.4 upgrade.
720
+ *
721
+ * Removes the Google plus defaults from the database.
722
+ */
723
+ private function upgrade_124() {
724
+ $this->cleanup_option_data( 'wpseo_social' );
725
+ }
726
+
727
  /**
728
  * Removes all notifications saved in the database under 'wp_yoast_notifications'.
729
  *
inc/class-wpseo-content-images.php CHANGED
@@ -29,11 +29,16 @@ class WPSEO_Content_Images {
29
  *
30
  * @return array An array of image URLs.
31
  */
32
- protected function get_images_from_content( $content ) {
 
 
 
 
33
  $content_images = $this->get_img_tags_from_content( $content );
34
  $images = array_map( array( $this, 'get_img_tag_source' ), $content_images );
35
  $images = array_filter( $images );
36
  $images = array_unique( $images );
 
37
 
38
  return $images;
39
  }
29
  *
30
  * @return array An array of image URLs.
31
  */
32
+ public function get_images_from_content( $content ) {
33
+ if ( ! is_string( $content ) ) {
34
+ return array();
35
+ }
36
+
37
  $content_images = $this->get_img_tags_from_content( $content );
38
  $images = array_map( array( $this, 'get_img_tag_source' ), $content_images );
39
  $images = array_filter( $images );
40
  $images = array_unique( $images );
41
+ $images = array_values( $images ); // Reset the array keys.
42
 
43
  return $images;
44
  }
inc/class-wpseo-image-utils.php CHANGED
@@ -374,23 +374,36 @@ class WPSEO_Image_Utils {
374
  public static function get_first_usable_content_image_for_post( $post_id = null ) {
375
  $post = get_post( $post_id );
376
 
377
- if ( $post === null ) {
 
378
  return null;
379
  }
380
 
381
  $image_finder = new WPSEO_Content_Images();
382
  $images = $image_finder->get_images( $post->ID, $post );
383
 
384
- if ( ! is_array( $images ) || empty( $images ) ) {
385
- return null;
386
- }
 
 
 
 
 
 
 
 
 
387
 
388
- $image_url = reset( $images );
389
- if ( ! $image_url ) {
390
  return null;
391
  }
392
 
393
- return $image_url;
 
 
 
394
  }
395
 
396
  /**
@@ -417,4 +430,24 @@ class WPSEO_Image_Utils {
417
 
418
  return $image_id;
419
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  }
374
  public static function get_first_usable_content_image_for_post( $post_id = null ) {
375
  $post = get_post( $post_id );
376
 
377
+ // We know get_post() returns the post or null.
378
+ if ( ! $post ) {
379
  return null;
380
  }
381
 
382
  $image_finder = new WPSEO_Content_Images();
383
  $images = $image_finder->get_images( $post->ID, $post );
384
 
385
+ return self::get_first_image( $images );
386
+ }
387
+
388
+ /**
389
+ * Gets the term's first usable content image. Null if none is available.
390
+ *
391
+ * @param int $term_id The term id.
392
+ *
393
+ * @return string|null The image URL.
394
+ */
395
+ public static function get_first_content_image_for_term( $term_id ) {
396
+ $term_description = term_description( $term_id );
397
 
398
+ // We know term_description() returns a string which may be empty.
399
+ if ( $term_description === '' ) {
400
  return null;
401
  }
402
 
403
+ $image_finder = new WPSEO_Content_Images();
404
+ $images = $image_finder->get_images_from_content( $term_description );
405
+
406
+ return self::get_first_image( $images );
407
  }
408
 
409
  /**
430
 
431
  return $image_id;
432
  }