Version Description
Download this release
Release Info
Developer | Yoast |
Plugin | Yoast SEO |
Version | 11.2 |
Comparing to | |
See all releases |
Code changes from version 11.1.1 to 11.2
- admin/capabilities/class-capability-manager-integration.php +3 -3
- admin/class-admin-asset-manager.php +2 -0
- admin/class-admin-init.php +2 -2
- admin/class-admin.php +1 -1
- admin/class-config.php +2 -2
- admin/class-help-center.php +6 -6
- admin/class-plugin-conflict.php +2 -2
- admin/class-product-upsell-notice.php +1 -6
- admin/class-schema-person-upgrade-notification.php +4 -4
- admin/class-yoast-form.php +4 -4
- admin/config-ui/class-configuration-page.php +7 -7
- admin/config-ui/components/class-component-suggestions.php +3 -3
- admin/formatter/class-metabox-formatter.php +1 -0
- admin/google_search_console/class-gsc-category-filters.php +6 -6
- admin/links/class-link-columns.php +1 -1
- admin/metabox/class-metabox.php +4 -0
- admin/notifiers/class-post-type-archive-notification-handler.php +1 -6
- admin/taxonomy/class-taxonomy-columns.php +1 -1
- admin/taxonomy/class-taxonomy.php +1 -0
- admin/views/js-templates-primary-term.php +9 -7
- admin/views/licenses.php +8 -5
- admin/views/tabs/metas/paper-content/general/knowledge-graph.php +1 -1
- admin/views/tabs/social/accounts.php +11 -2
- admin/views/tabs/social/pinterest.php +1 -1
- css/dist/{admin-global-1111-rtl.min.css → admin-global-1120-rtl.min.css} +0 -0
- css/dist/{admin-global-1111.min.css → admin-global-1120.min.css} +0 -0
- css/dist/{adminbar-1111-rtl.min.css → adminbar-1120-rtl.min.css} +0 -0
- css/dist/{adminbar-1111.min.css → adminbar-1120.min.css} +0 -0
- css/dist/{alerts-1111-rtl.min.css → alerts-1120-rtl.min.css} +0 -0
- css/dist/{alerts-1111.min.css → alerts-1120.min.css} +0 -0
- css/dist/{dashboard-1111-rtl.min.css → dashboard-1120-rtl.min.css} +0 -0
- css/dist/{dashboard-1111.min.css → dashboard-1120.min.css} +0 -0
- css/dist/{edit-page-1111-rtl.min.css → edit-page-1120-rtl.min.css} +0 -0
- css/dist/{edit-page-1111.min.css → edit-page-1120.min.css} +0 -0
- css/dist/{featured-image-1111-rtl.min.css → featured-image-1120-rtl.min.css} +0 -0
- css/dist/{featured-image-1111.min.css → featured-image-1120.min.css} +0 -0
- css/dist/{filter-explanation-1111-rtl.min.css → filter-explanation-1120-rtl.min.css} +0 -0
- css/dist/{filter-explanation-1111.min.css → filter-explanation-1120.min.css} +0 -0
- css/dist/{inside-editor-1111-rtl.min.css → inside-editor-1120-rtl.min.css} +0 -0
- css/dist/{inside-editor-1111.min.css → inside-editor-1120.min.css} +0 -0
- css/dist/{metabox-1111-rtl.min.css → metabox-1120-rtl.min.css} +0 -0
- css/dist/{metabox-1111.min.css → metabox-1120.min.css} +0 -0
- css/dist/{metabox-primary-category-1111-rtl.min.css → metabox-primary-category-1120-rtl.min.css} +0 -0
- css/dist/{metabox-primary-category-1111.min.css → metabox-primary-category-1120.min.css} +0 -0
- css/dist/{search-appearance-1111-rtl.min.css → search-appearance-1120-rtl.min.css} +0 -0
- css/dist/{search-appearance-1111.min.css → search-appearance-1120.min.css} +0 -0
- css/dist/{structured-data-blocks-1111-rtl.min.css → structured-data-blocks-1120-rtl.min.css} +0 -0
- css/dist/{structured-data-blocks-1111.min.css → structured-data-blocks-1120.min.css} +0 -0
- css/dist/{toggle-switch-1111-rtl.min.css → toggle-switch-1120-rtl.min.css} +0 -0
- css/dist/{toggle-switch-1111.min.css → toggle-switch-1120.min.css} +0 -0
- css/dist/{wpseo-dismissible-1111-rtl.min.css → wpseo-dismissible-1120-rtl.min.css} +0 -0
- css/dist/{wpseo-dismissible-1111.min.css → wpseo-dismissible-1120.min.css} +0 -0
- css/dist/yoast-components-1111-rtl.min.css +0 -1
- css/dist/yoast-components-1111.min.css +0 -1
- css/dist/yoast-components-1120-rtl.min.css +1 -0
- css/dist/yoast-components-1120.min.css +1 -0
- css/dist/{yoast-extensions-1111-rtl.min.css → yoast-extensions-1120-rtl.min.css} +0 -0
- css/dist/{yoast-extensions-1111.min.css → yoast-extensions-1120.min.css} +0 -0
- css/dist/{yst_plugin_tools-1111-rtl.min.css → yst_plugin_tools-1120-rtl.min.css} +0 -0
- css/dist/{yst_plugin_tools-1111.min.css → yst_plugin_tools-1120.min.css} +0 -0
- css/dist/{yst_seo_score-1111-rtl.min.css → yst_seo_score-1120-rtl.min.css} +0 -0
- css/dist/{yst_seo_score-1111.min.css → yst_seo_score-1120.min.css} +0 -0
- frontend/class-frontend.php +1 -0
- frontend/class-opengraph-image.php +5 -11
- frontend/class-opengraph.php +6 -42
- frontend/class-twitter.php +2 -8
- frontend/schema/class-schema-article.php +26 -7
- frontend/schema/class-schema-author.php +1 -2
- frontend/schema/class-schema-breadcrumb.php +7 -4
- frontend/schema/class-schema-image.php +0 -2
- frontend/schema/class-schema-person.php +29 -14
- frontend/schema/class-schema-webpage.php +50 -8
- frontend/schema/class-schema.php +10 -2
- frontend/schema/interface-wpseo-graph-piece.php +1 -0
- inc/class-addon-manager.php +0 -1
- inc/class-wpseo-image-utils.php +25 -0
- inc/class-wpseo-meta.php +25 -26
- inc/class-wpseo-utils.php +41 -8
- inc/options/class-wpseo-option-wpseo.php +1 -1
- inc/options/class-wpseo-option.php +1 -1
- inc/sitemaps/class-post-type-sitemap-provider.php +14 -10
- inc/sitemaps/class-sitemaps-renderer.php +27 -17
- inc/sitemaps/class-sitemaps-router.php +3 -3
- inc/sitemaps/class-sitemaps.php +44 -11
- inc/sitemaps/class-taxonomy-sitemap-provider.php +3 -1
- inc/structured-data-blocks/class-faq-block.php +13 -4
- inc/structured-data-blocks/class-how-to-block.php +13 -4
- inc/wpseo-functions.php +1 -1
- js/dist/analysis-1111.min.js +0 -21
admin/capabilities/class-capability-manager-integration.php
CHANGED
@@ -60,7 +60,7 @@ class WPSEO_Capability_Manager_Integration implements WPSEO_WordPress_Integratio
|
|
60 |
/**
|
61 |
* Add capabilities to its own group in the Members plugin.
|
62 |
*
|
63 |
-
* @see
|
64 |
*/
|
65 |
public function action_members_register_cap_group() {
|
66 |
if ( ! function_exists( 'members_register_cap_group' ) ) {
|
@@ -80,7 +80,7 @@ class WPSEO_Capability_Manager_Integration implements WPSEO_WordPress_Integratio
|
|
80 |
/**
|
81 |
* Adds Yoast SEO capability group in the User Role Editor plugin.
|
82 |
*
|
83 |
-
* @see
|
84 |
*
|
85 |
* @param array $groups Current groups.
|
86 |
*
|
@@ -101,7 +101,7 @@ class WPSEO_Capability_Manager_Integration implements WPSEO_WordPress_Integratio
|
|
101 |
/**
|
102 |
* Adds capabilities to the Yoast SEO group in the User Role Editor plugin.
|
103 |
*
|
104 |
-
* @see
|
105 |
*
|
106 |
* @param array $groups Current capability groups.
|
107 |
* @param string $cap_id Capability identifier.
|
60 |
/**
|
61 |
* Add capabilities to its own group in the Members plugin.
|
62 |
*
|
63 |
+
* @see members_register_cap_group()
|
64 |
*/
|
65 |
public function action_members_register_cap_group() {
|
66 |
if ( ! function_exists( 'members_register_cap_group' ) ) {
|
80 |
/**
|
81 |
* Adds Yoast SEO capability group in the User Role Editor plugin.
|
82 |
*
|
83 |
+
* @see URE_Capabilities_Groups_Manager::get_groups_tree()
|
84 |
*
|
85 |
* @param array $groups Current groups.
|
86 |
*
|
101 |
/**
|
102 |
* Adds capabilities to the Yoast SEO group in the User Role Editor plugin.
|
103 |
*
|
104 |
+
* @see URE_Capabilities_Groups_Manager::get_cap_groups()
|
105 |
*
|
106 |
* @param array $groups Current capability groups.
|
107 |
* @param string $cap_id Capability identifier.
|
admin/class-admin-asset-manager.php
CHANGED
@@ -452,6 +452,7 @@ class WPSEO_Admin_Asset_Manager {
|
|
452 |
'deps' => array(
|
453 |
'wp-util',
|
454 |
'wp-api',
|
|
|
455 |
'wp-element',
|
456 |
'wp-i18n',
|
457 |
'wp-data',
|
@@ -469,6 +470,7 @@ class WPSEO_Admin_Asset_Manager {
|
|
469 |
'name' => 'term-scraper',
|
470 |
'src' => 'wp-seo-term-scraper-' . $flat_version,
|
471 |
'deps' => array(
|
|
|
472 |
'wp-element',
|
473 |
'wp-i18n',
|
474 |
'wp-data',
|
452 |
'deps' => array(
|
453 |
'wp-util',
|
454 |
'wp-api',
|
455 |
+
'wp-sanitize',
|
456 |
'wp-element',
|
457 |
'wp-i18n',
|
458 |
'wp-data',
|
470 |
'name' => 'term-scraper',
|
471 |
'src' => 'wp-seo-term-scraper-' . $flat_version,
|
472 |
'deps' => array(
|
473 |
+
'wp-sanitize',
|
474 |
'wp-element',
|
475 |
'wp-i18n',
|
476 |
'wp-data',
|
admin/class-admin-init.php
CHANGED
@@ -346,7 +346,7 @@ class WPSEO_Admin_Init {
|
|
346 |
$type = ( $plugin['active'] ) ? Yoast_Notification::ERROR : Yoast_Notification::WARNING;
|
347 |
$notification = $this->get_yoast_seo_compatibility_notification( $name, $plugin, $type );
|
348 |
|
349 |
-
if ( $plugin['compatible'] === false ) {
|
350 |
$notification_center->add_notification( $notification );
|
351 |
|
352 |
continue;
|
@@ -602,7 +602,7 @@ class WPSEO_Admin_Init {
|
|
602 |
public function show_hook_deprecation_warnings() {
|
603 |
global $wp_filter;
|
604 |
|
605 |
-
if (
|
606 |
return;
|
607 |
}
|
608 |
|
346 |
$type = ( $plugin['active'] ) ? Yoast_Notification::ERROR : Yoast_Notification::WARNING;
|
347 |
$notification = $this->get_yoast_seo_compatibility_notification( $name, $plugin, $type );
|
348 |
|
349 |
+
if ( $plugin['active'] && $plugin['compatible'] === false ) {
|
350 |
$notification_center->add_notification( $notification );
|
351 |
|
352 |
continue;
|
602 |
public function show_hook_deprecation_warnings() {
|
603 |
global $wp_filter;
|
604 |
|
605 |
+
if ( wp_doing_ajax() ) {
|
606 |
return;
|
607 |
}
|
608 |
|
admin/class-admin.php
CHANGED
@@ -276,7 +276,7 @@ class WPSEO_Admin {
|
|
276 |
$contactmethods['tumblr'] = __( 'Tumblr profile URL', 'wordpress-seo' );
|
277 |
$contactmethods['twitter'] = __( 'Twitter username (without @)', 'wordpress-seo' );
|
278 |
$contactmethods['youtube'] = __( 'YouTube profile URL', 'wordpress-seo' );
|
279 |
-
$contactmethods['wikipedia']
|
280 |
|
281 |
return $contactmethods;
|
282 |
}
|
276 |
$contactmethods['tumblr'] = __( 'Tumblr profile URL', 'wordpress-seo' );
|
277 |
$contactmethods['twitter'] = __( 'Twitter username (without @)', 'wordpress-seo' );
|
278 |
$contactmethods['youtube'] = __( 'YouTube profile URL', 'wordpress-seo' );
|
279 |
+
$contactmethods['wikipedia'] = __( 'Wikipedia page about you', 'wordpress-seo' ) . '<br/><small>' . __( '(if one exists)', 'wordpress-seo' ) . '</small>';
|
280 |
|
281 |
return $contactmethods;
|
282 |
}
|
admin/class-config.php
CHANGED
@@ -158,8 +158,8 @@ class WPSEO_Admin_Pages {
|
|
158 |
private function should_show_local_seo_upsell() {
|
159 |
$addon_manager = new WPSEO_Addon_Manager();
|
160 |
|
161 |
-
return ! WPSEO_Utils::is_yoast_seo_premium()
|
162 |
-
|
163 |
}
|
164 |
|
165 |
/**
|
158 |
private function should_show_local_seo_upsell() {
|
159 |
$addon_manager = new WPSEO_Addon_Manager();
|
160 |
|
161 |
+
return ! WPSEO_Utils::is_yoast_seo_premium()
|
162 |
+
&& ! $addon_manager->has_valid_subscription( WPSEO_Addon_Manager::LOCAL_SLUG );
|
163 |
}
|
164 |
|
165 |
/**
|
admin/class-help-center.php
CHANGED
@@ -200,8 +200,8 @@ class WPSEO_Help_Center {
|
|
200 |
/* translators: %s: expands to 'Yoast SEO Premium'. */
|
201 |
$popup_title = sprintf( __( 'Email support is a %s feature', 'wordpress-seo' ), 'Yoast SEO Premium' );
|
202 |
$popup_content = '<p class="yoast-measure">' . __( 'Go Premium and our experts will be there for you to answer any questions you might have about the setup and use of the plugin.', 'wordpress-seo' ) . '</p>';
|
203 |
-
/* translators: %
|
204 |
-
$popup_content .= '<p>' . sprintf( __( 'Other benefits of %
|
205 |
$popup_content .= '<ul class="wpseo-premium-advantages-list">';
|
206 |
$popup_content .= '<li>' . sprintf(
|
207 |
// We don't use strong text here, but we do use it in the "Add keyword" popup, this is just to have the same translatable strings.
|
@@ -210,11 +210,11 @@ class WPSEO_Help_Center {
|
|
210 |
'',
|
211 |
''
|
212 |
) . '</li>';
|
213 |
-
$popup_content .= '<li>' . __( 'Superfast internal
|
214 |
$popup_content .= '<li>' . sprintf(
|
215 |
// We don't use strong text here, but we do use it in the "Add keyword" popup, this is just to have the same translatable strings.
|
216 |
/* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */
|
217 |
-
__( '%1$sSocial media preview%2$s: Facebook &
|
218 |
'',
|
219 |
''
|
220 |
) . '</li>';
|
@@ -260,8 +260,8 @@ class WPSEO_Help_Center {
|
|
260 |
'searchResultDetail.searchResult' => __( 'Search result', 'wordpress-seo' ),
|
261 |
'searchResult.noResultsText' => __( 'No results found.', 'wordpress-seo' ),
|
262 |
'searchResult.foundResultsText' => sprintf(
|
263 |
-
/* translators: %
|
264 |
-
__( 'Number of results found: %
|
265 |
'{ resultsCount }'
|
266 |
),
|
267 |
'searchResult.searchResultsHeading' => __( 'Search results', 'wordpress-seo' ),
|
200 |
/* translators: %s: expands to 'Yoast SEO Premium'. */
|
201 |
$popup_title = sprintf( __( 'Email support is a %s feature', 'wordpress-seo' ), 'Yoast SEO Premium' );
|
202 |
$popup_content = '<p class="yoast-measure">' . __( 'Go Premium and our experts will be there for you to answer any questions you might have about the setup and use of the plugin.', 'wordpress-seo' ) . '</p>';
|
203 |
+
/* translators: %s: expands to 'Yoast SEO Premium'. */
|
204 |
+
$popup_content .= '<p>' . sprintf( __( 'Other benefits of %s for you:', 'wordpress-seo' ), 'Yoast SEO Premium' ) . '</p>';
|
205 |
$popup_content .= '<ul class="wpseo-premium-advantages-list">';
|
206 |
$popup_content .= '<li>' . sprintf(
|
207 |
// We don't use strong text here, but we do use it in the "Add keyword" popup, this is just to have the same translatable strings.
|
210 |
'',
|
211 |
''
|
212 |
) . '</li>';
|
213 |
+
$popup_content .= '<li>' . __( 'Superfast internal linking suggestions', 'wordpress-seo' ) . '</li>';
|
214 |
$popup_content .= '<li>' . sprintf(
|
215 |
// We don't use strong text here, but we do use it in the "Add keyword" popup, this is just to have the same translatable strings.
|
216 |
/* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */
|
217 |
+
__( '%1$sSocial media preview%2$s: Facebook & Twitter', 'wordpress-seo' ),
|
218 |
'',
|
219 |
''
|
220 |
) . '</li>';
|
260 |
'searchResultDetail.searchResult' => __( 'Search result', 'wordpress-seo' ),
|
261 |
'searchResult.noResultsText' => __( 'No results found.', 'wordpress-seo' ),
|
262 |
'searchResult.foundResultsText' => sprintf(
|
263 |
+
/* translators: %d expands to the number of results found . */
|
264 |
+
__( 'Number of results found: %d', 'wordpress-seo' ),
|
265 |
'{ resultsCount }'
|
266 |
),
|
267 |
'searchResult.searchResultsHeading' => __( 'Search results', 'wordpress-seo' ),
|
admin/class-plugin-conflict.php
CHANGED
@@ -139,11 +139,11 @@ class WPSEO_Plugin_Conflict extends Yoast_Plugin_Conflict {
|
|
139 |
// Only check for open graph problems when they are enabled.
|
140 |
if ( WPSEO_Options::get( 'opengraph' ) ) {
|
141 |
/* translators: %1$s expands to Yoast SEO, %2$s: 'Facebook' plugin name of possibly conflicting plugin with regard to creating OpenGraph output. */
|
142 |
-
$plugin_sections['open_graph'] = __( 'Both %1$s and %2$s create
|
143 |
. '<br/><br/>'
|
144 |
. '<a class="button" href="' . admin_url( 'admin.php?page=wpseo_social#top#facebook' ) . '">'
|
145 |
/* translators: %1$s expands to Yoast SEO. */
|
146 |
-
. sprintf( __( 'Configure %1$s\'s
|
147 |
. '</a>';
|
148 |
}
|
149 |
|
139 |
// Only check for open graph problems when they are enabled.
|
140 |
if ( WPSEO_Options::get( 'opengraph' ) ) {
|
141 |
/* translators: %1$s expands to Yoast SEO, %2$s: 'Facebook' plugin name of possibly conflicting plugin with regard to creating OpenGraph output. */
|
142 |
+
$plugin_sections['open_graph'] = __( 'Both %1$s and %2$s create Open Graph output, which might make Facebook, Twitter, LinkedIn and other social networks use the wrong texts and images when your pages are being shared.', 'wordpress-seo' )
|
143 |
. '<br/><br/>'
|
144 |
. '<a class="button" href="' . admin_url( 'admin.php?page=wpseo_social#top#facebook' ) . '">'
|
145 |
/* translators: %1$s expands to Yoast SEO. */
|
146 |
+
. sprintf( __( 'Configure %1$s\'s Open Graph settings', 'wordpress-seo' ), 'Yoast SEO' )
|
147 |
. '</a>';
|
148 |
}
|
149 |
|
admin/class-product-upsell-notice.php
CHANGED
@@ -149,12 +149,7 @@ class WPSEO_Product_Upsell_Notice {
|
|
149 |
|
150 |
$message .= $this->get_premium_upsell_section() . "\n\n";
|
151 |
|
152 |
-
$message .=
|
153 |
-
/* translators: %1$s is the notification dismissal link start tag, %2$s is the link closing tag. */
|
154 |
-
__( '%1$sPlease don\'t show me this notification anymore%2$s', 'wordpress-seo' ),
|
155 |
-
'<a class="button" href="' . admin_url( '?page=' . WPSEO_Admin::PAGE_IDENTIFIER . '&yoast_dismiss=upsell' ) . '">',
|
156 |
-
'</a>'
|
157 |
-
);
|
158 |
|
159 |
$notification = new Yoast_Notification(
|
160 |
$message,
|
149 |
|
150 |
$message .= $this->get_premium_upsell_section() . "\n\n";
|
151 |
|
152 |
+
$message .= '<a class="button" href="' . admin_url( '?page=' . WPSEO_Admin::PAGE_IDENTIFIER . '&yoast_dismiss=upsell' ) . '">' . __( 'Please don\'t show me this notification anymore', 'wordpress-seo' ) . '</a>';
|
|
|
|
|
|
|
|
|
|
|
153 |
|
154 |
$notification = new Yoast_Notification(
|
155 |
$message,
|
admin/class-schema-person-upgrade-notification.php
CHANGED
@@ -55,11 +55,11 @@ class WPSEO_Schema_Person_Upgrade_Notification implements WPSEO_WordPress_Integr
|
|
55 |
*/
|
56 |
protected function get_notification() {
|
57 |
$message = sprintf(
|
58 |
-
|
59 |
-
|
60 |
-
'<a href="' . admin_url( 'admin.php?page=wpseo_titles' ) . '">',
|
61 |
'</a>'
|
62 |
-
|
63 |
|
64 |
$notification = new Yoast_Notification(
|
65 |
$message,
|
55 |
*/
|
56 |
protected function get_notification() {
|
57 |
$message = sprintf(
|
58 |
+
/* translators: %1$s is a link start tag to the Configuration Wizard, %2$s is the link closing tag. */
|
59 |
+
__( 'You have previously set your site to represent a person. We’ve improved our functionality around Schema and the Knowledge Graph, so you should go in and %1$scomplete those settings%2$s.', 'wordpress-seo' ),
|
60 |
+
'<a href="' . esc_url( admin_url( 'admin.php?page=wpseo_titles' ) ) . '">',
|
61 |
'</a>'
|
62 |
+
);
|
63 |
|
64 |
$notification = new Yoast_Notification(
|
65 |
$message,
|
admin/class-yoast-form.php
CHANGED
@@ -343,17 +343,17 @@ class Yoast_Form {
|
|
343 |
public function textinput( $var, $label, $attr = array() ) {
|
344 |
if ( ! is_array( $attr ) ) {
|
345 |
$attr = array(
|
346 |
-
'class'
|
347 |
'disabled' => false,
|
348 |
);
|
349 |
}
|
350 |
|
351 |
-
$defaults
|
352 |
'placeholder' => '',
|
353 |
'class' => '',
|
354 |
);
|
355 |
-
$attr
|
356 |
-
$val
|
357 |
$attributes = isset( $attr['autocomplete'] ) ? ' autocomplete="' . esc_attr( $attr['autocomplete'] ) . '"' : '';
|
358 |
if ( isset( $attr['disabled'] ) && $attr['disabled'] ) {
|
359 |
$attributes .= ' disabled';
|
343 |
public function textinput( $var, $label, $attr = array() ) {
|
344 |
if ( ! is_array( $attr ) ) {
|
345 |
$attr = array(
|
346 |
+
'class' => $attr,
|
347 |
'disabled' => false,
|
348 |
);
|
349 |
}
|
350 |
|
351 |
+
$defaults = array(
|
352 |
'placeholder' => '',
|
353 |
'class' => '',
|
354 |
);
|
355 |
+
$attr = wp_parse_args( $attr, $defaults );
|
356 |
+
$val = isset( $this->options[ $var ] ) ? $this->options[ $var ] : '';
|
357 |
$attributes = isset( $attr['autocomplete'] ) ? ' autocomplete="' . esc_attr( $attr['autocomplete'] ) . '"' : '';
|
358 |
if ( isset( $attr['disabled'] ) && $attr['disabled'] ) {
|
359 |
$attributes .= ' disabled';
|
admin/config-ui/class-configuration-page.php
CHANGED
@@ -101,6 +101,11 @@ class WPSEO_Configuration_Page {
|
|
101 |
public function show_wizard() {
|
102 |
$this->enqueue_assets();
|
103 |
$dashboard_url = admin_url( '/admin.php?page=wpseo_dashboard' );
|
|
|
|
|
|
|
|
|
|
|
104 |
?>
|
105 |
<!DOCTYPE html>
|
106 |
<!--[if IE 9]>
|
@@ -112,12 +117,7 @@ class WPSEO_Configuration_Page {
|
|
112 |
<head>
|
113 |
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
114 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
115 |
-
<title><?php
|
116 |
-
printf(
|
117 |
-
/* translators: %s expands to Yoast SEO. */
|
118 |
-
esc_html__( '%s › Configuration Wizard', 'wordpress-seo' ),
|
119 |
-
'Yoast SEO' );
|
120 |
-
?></title>
|
121 |
<?php
|
122 |
wp_print_head_scripts();
|
123 |
wp_print_styles( 'yoast-seo-yoast-components' );
|
@@ -138,7 +138,7 @@ class WPSEO_Configuration_Page {
|
|
138 |
<a class="button yoast-wizard-return-link" href="<?php echo esc_url( $dashboard_url ); ?>">
|
139 |
<span aria-hidden="true" class="dashicons dashicons-no"></span>
|
140 |
<?php
|
141 |
-
esc_html_e( 'Close
|
142 |
?>
|
143 |
</a>
|
144 |
</div>
|
101 |
public function show_wizard() {
|
102 |
$this->enqueue_assets();
|
103 |
$dashboard_url = admin_url( '/admin.php?page=wpseo_dashboard' );
|
104 |
+
$wizard_title = sprintf(
|
105 |
+
/* translators: %s expands to Yoast SEO. */
|
106 |
+
__( '%s › Configuration Wizard', 'wordpress-seo' ),
|
107 |
+
'Yoast SEO'
|
108 |
+
);
|
109 |
?>
|
110 |
<!DOCTYPE html>
|
111 |
<!--[if IE 9]>
|
117 |
<head>
|
118 |
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
119 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
120 |
+
<title><?php echo esc_html( $wizard_title ); ?></title>
|
|
|
|
|
|
|
|
|
|
|
121 |
<?php
|
122 |
wp_print_head_scripts();
|
123 |
wp_print_styles( 'yoast-seo-yoast-components' );
|
138 |
<a class="button yoast-wizard-return-link" href="<?php echo esc_url( $dashboard_url ); ?>">
|
139 |
<span aria-hidden="true" class="dashicons dashicons-no"></span>
|
140 |
<?php
|
141 |
+
esc_html_e( 'Close the Wizard', 'wordpress-seo' );
|
142 |
?>
|
143 |
</a>
|
144 |
</div>
|
admin/config-ui/components/class-component-suggestions.php
CHANGED
@@ -37,7 +37,7 @@ class WPSEO_Config_Component_Suggestions implements WPSEO_Config_Component {
|
|
37 |
array(
|
38 |
'label' => __( 'Upgrade to Premium', 'wordpress-seo' ),
|
39 |
'type' => 'primary',
|
40 |
-
'
|
41 |
),
|
42 |
array(
|
43 |
'url' => WPSEO_Shortlinker::get( 'https://yoa.st/video-yoast-seo-premium' ),
|
@@ -60,7 +60,7 @@ class WPSEO_Config_Component_Suggestions implements WPSEO_Config_Component {
|
|
60 |
array(
|
61 |
'label' => 'Keyword research training',
|
62 |
'type' => 'link',
|
63 |
-
'
|
64 |
),
|
65 |
array(
|
66 |
'url' => WPSEO_Shortlinker::get( 'https://yoa.st/3lf' ),
|
@@ -80,7 +80,7 @@ class WPSEO_Config_Component_Suggestions implements WPSEO_Config_Component {
|
|
80 |
array(
|
81 |
'label' => 'Yoast SEO plugin training',
|
82 |
'type' => 'link',
|
83 |
-
'
|
84 |
),
|
85 |
array(
|
86 |
'url' => WPSEO_Shortlinker::get( 'https://yoa.st/video-plugin-course' ),
|
37 |
array(
|
38 |
'label' => __( 'Upgrade to Premium', 'wordpress-seo' ),
|
39 |
'type' => 'primary',
|
40 |
+
'href' => WPSEO_Shortlinker::get( 'https://yoa.st/wizard-suggestion-premium' ),
|
41 |
),
|
42 |
array(
|
43 |
'url' => WPSEO_Shortlinker::get( 'https://yoa.st/video-yoast-seo-premium' ),
|
60 |
array(
|
61 |
'label' => 'Keyword research training',
|
62 |
'type' => 'link',
|
63 |
+
'href' => WPSEO_Shortlinker::get( 'https://yoa.st/3lg' ),
|
64 |
),
|
65 |
array(
|
66 |
'url' => WPSEO_Shortlinker::get( 'https://yoa.st/3lf' ),
|
80 |
array(
|
81 |
'label' => 'Yoast SEO plugin training',
|
82 |
'type' => 'link',
|
83 |
+
'href' => WPSEO_Shortlinker::get( 'https://yoa.st/wizard-suggestion-plugin-course' ),
|
84 |
),
|
85 |
array(
|
86 |
'url' => WPSEO_Shortlinker::get( 'https://yoa.st/video-plugin-course' ),
|
admin/formatter/class-metabox-formatter.php
CHANGED
@@ -67,6 +67,7 @@ class WPSEO_Metabox_Formatter {
|
|
67 |
'cornerstoneActive' => WPSEO_Options::get( 'enable_cornerstone_content', false ) ? 1 : 0,
|
68 |
'intl' => $this->get_content_analysis_component_translations(),
|
69 |
'isRtl' => is_rtl(),
|
|
|
70 |
'addKeywordUpsell' => $this->get_add_keyword_upsell_translations(),
|
71 |
'wordFormRecognitionActive' => ( WPSEO_Language_Utils::get_language( get_locale() ) === 'en' ),
|
72 |
|
67 |
'cornerstoneActive' => WPSEO_Options::get( 'enable_cornerstone_content', false ) ? 1 : 0,
|
68 |
'intl' => $this->get_content_analysis_component_translations(),
|
69 |
'isRtl' => is_rtl(),
|
70 |
+
'isPremium' => WPSEO_Utils::is_yoast_seo_premium(),
|
71 |
'addKeywordUpsell' => $this->get_add_keyword_upsell_translations(),
|
72 |
'wordFormRecognitionActive' => ( WPSEO_Language_Utils::get_language( get_locale() ) === 'en' ),
|
73 |
|
admin/google_search_console/class-gsc-category-filters.php
CHANGED
@@ -113,15 +113,15 @@ class WPSEO_GSC_Category_Filters {
|
|
113 |
* Setting the values for the filter.
|
114 |
*/
|
115 |
private function set_filter_values() {
|
116 |
-
$this->set_filter_value( 'access_denied', __( 'Access denied', 'wordpress-seo' ), __( 'Server requires authentication or is blocking Googlebot from accessing the site.', 'wordpress-seo' ), __( 'Show information about errors in category
|
117 |
$this->set_filter_value( 'faulty_redirects', __( 'Faulty redirects', 'wordpress-seo' ) );
|
118 |
$this->set_filter_value( 'not_followed', __( 'Not followed', 'wordpress-seo' ) );
|
119 |
-
$this->set_filter_value( 'not_found', __( 'Not found', 'wordpress-seo' ), __( 'URL points to a non-existent page.', 'wordpress-seo' ), __( 'Show information about errors in category
|
120 |
-
$this->set_filter_value( 'other', __( 'Other', 'wordpress-seo' ), __( 'Google was unable to crawl this URL due to an undetermined issue.', 'wordpress-seo' ), __( 'Show information about errors in category
|
121 |
/* Translators: %1$s: expands to '<code>robots.txt</code>'. */
|
122 |
-
$this->set_filter_value( 'roboted', __( 'Blocked', 'wordpress-seo' ), sprintf( __( 'Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile.', 'wordpress-seo' ), '<code>robots.txt</code>' ), __( 'Show information about errors in category
|
123 |
-
$this->set_filter_value( 'server_error', __( 'Server Error', 'wordpress-seo' ), __( 'Request timed out or site is blocking Google.', 'wordpress-seo' ), __( 'Show information about errors in category
|
124 |
-
$this->set_filter_value( 'soft_404', __( 'Soft 404', 'wordpress-seo' ), __( "The target URL doesn't exist, but your server is not returning a 404 (file not found) error.", 'wordpress-seo' ), __( 'Show information about errors in category
|
125 |
}
|
126 |
|
127 |
/**
|
113 |
* Setting the values for the filter.
|
114 |
*/
|
115 |
private function set_filter_values() {
|
116 |
+
$this->set_filter_value( 'access_denied', __( 'Access denied', 'wordpress-seo' ), __( 'Server requires authentication or is blocking Googlebot from accessing the site.', 'wordpress-seo' ), sprintf( __( 'Show information about errors in category %s', 'wordpress-seo' ), __( 'Access denied', 'wordpress-seo' ) ) );
|
117 |
$this->set_filter_value( 'faulty_redirects', __( 'Faulty redirects', 'wordpress-seo' ) );
|
118 |
$this->set_filter_value( 'not_followed', __( 'Not followed', 'wordpress-seo' ) );
|
119 |
+
$this->set_filter_value( 'not_found', __( 'Not found', 'wordpress-seo' ), __( 'URL points to a non-existent page.', 'wordpress-seo' ), sprintf( __( 'Show information about errors in category %s', 'wordpress-seo' ), __( 'Not found', 'wordpress-seo' ) ) );
|
120 |
+
$this->set_filter_value( 'other', __( 'Other', 'wordpress-seo' ), __( 'Google was unable to crawl this URL due to an undetermined issue.', 'wordpress-seo' ), sprintf( __( 'Show information about errors in category %s', 'wordpress-seo' ), __( 'Other', 'wordpress-seo' ) ) );
|
121 |
/* Translators: %1$s: expands to '<code>robots.txt</code>'. */
|
122 |
+
$this->set_filter_value( 'roboted', __( 'Blocked', 'wordpress-seo' ), sprintf( __( 'Googlebot could access your site, but certain URLs are blocked for Googlebot in your %1$s file. This block could either be for all Googlebots or even specifically for Googlebot-mobile.', 'wordpress-seo' ), '<code>robots.txt</code>' ), sprintf( __( 'Show information about errors in category %s', 'wordpress-seo' ), __( 'Blocked', 'wordpress-seo' ) ) );
|
123 |
+
$this->set_filter_value( 'server_error', __( 'Server Error', 'wordpress-seo' ), __( 'Request timed out or site is blocking Google.', 'wordpress-seo' ), sprintf( __( 'Show information about errors in category %s', 'wordpress-seo' ), __( 'Server', 'wordpress-seo' ) ) );
|
124 |
+
$this->set_filter_value( 'soft_404', __( 'Soft 404', 'wordpress-seo' ), __( "The target URL doesn't exist, but your server is not returning a 404 (file not found) error.", 'wordpress-seo' ), sprintf( __( 'Show information about errors in category %s', 'wordpress-seo' ), __( 'Soft 404', 'wordpress-seo' ) ) );
|
125 |
}
|
126 |
|
127 |
/**
|
admin/links/class-link-columns.php
CHANGED
@@ -57,7 +57,7 @@ class WPSEO_Link_Columns {
|
|
57 |
*/
|
58 |
public function register_hooks() {
|
59 |
global $pagenow;
|
60 |
-
$is_ajax_request =
|
61 |
|
62 |
if ( ! WPSEO_Metabox::is_post_overview( $pagenow ) && ! $is_ajax_request ) {
|
63 |
return;
|
57 |
*/
|
58 |
public function register_hooks() {
|
59 |
global $pagenow;
|
60 |
+
$is_ajax_request = wp_doing_ajax();
|
61 |
|
62 |
if ( ! WPSEO_Metabox::is_post_overview( $pagenow ) && ! $is_ajax_request ) {
|
63 |
return;
|
admin/metabox/class-metabox.php
CHANGED
@@ -778,6 +778,8 @@ class WPSEO_Metabox extends WPSEO_Meta {
|
|
778 |
'url' => $analysis_worker_location->get_url( $analysis_worker_location->get_asset(), WPSEO_Admin_Asset::TYPE_JS ),
|
779 |
'keywords_assessment_url' => $used_keywords_assessment_location->get_url( $used_keywords_assessment_location->get_asset(), WPSEO_Admin_Asset::TYPE_JS ),
|
780 |
'log_level' => WPSEO_Utils::get_analysis_worker_log_level(),
|
|
|
|
|
781 |
);
|
782 |
wp_localize_script(
|
783 |
WPSEO_Admin_Asset_Manager::PREFIX . 'post-scraper',
|
@@ -797,6 +799,8 @@ class WPSEO_Metabox extends WPSEO_Meta {
|
|
797 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoAdminL10n', WPSEO_Utils::get_admin_l10n() );
|
798 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoSelect2Locale', WPSEO_Language_Utils::get_language( WPSEO_Language_Utils::get_user_locale() ) );
|
799 |
|
|
|
|
|
800 |
if ( post_type_supports( get_post_type(), 'thumbnail' ) ) {
|
801 |
$asset_manager->enqueue_style( 'featured-image' );
|
802 |
|
778 |
'url' => $analysis_worker_location->get_url( $analysis_worker_location->get_asset(), WPSEO_Admin_Asset::TYPE_JS ),
|
779 |
'keywords_assessment_url' => $used_keywords_assessment_location->get_url( $used_keywords_assessment_location->get_asset(), WPSEO_Admin_Asset::TYPE_JS ),
|
780 |
'log_level' => WPSEO_Utils::get_analysis_worker_log_level(),
|
781 |
+
// We need to make the feature flags separately available inside of the analysis web worker.
|
782 |
+
'enabled_features' => WPSEO_Utils::retrieve_enabled_features(),
|
783 |
);
|
784 |
wp_localize_script(
|
785 |
WPSEO_Admin_Asset_Manager::PREFIX . 'post-scraper',
|
799 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoAdminL10n', WPSEO_Utils::get_admin_l10n() );
|
800 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoSelect2Locale', WPSEO_Language_Utils::get_language( WPSEO_Language_Utils::get_user_locale() ) );
|
801 |
|
802 |
+
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoFeaturesL10n', WPSEO_Utils::retrieve_enabled_features() );
|
803 |
+
|
804 |
if ( post_type_supports( get_post_type(), 'thumbnail' ) ) {
|
805 |
$asset_manager->enqueue_style( 'featured-image' );
|
806 |
|
admin/notifiers/class-post-type-archive-notification-handler.php
CHANGED
@@ -73,12 +73,7 @@ class WPSEO_Post_Type_Archive_Notification_Handler extends WPSEO_Dismissible_Not
|
|
73 |
implode( ', ', $post_types )
|
74 |
);
|
75 |
$message .= PHP_EOL . PHP_EOL;
|
76 |
-
$message .=
|
77 |
-
/* translators: %1$s is the notification dismissal link start tag, %2$s is the link closing tag. */
|
78 |
-
__( '%1$sRemove this message%2$s', 'wordpress-seo' ),
|
79 |
-
'<a class="button" href="' . admin_url( '?page=' . WPSEO_Admin::PAGE_IDENTIFIER . '&yoast_dismiss=' . $this->notification_identifier ) . '">',
|
80 |
-
'</a>'
|
81 |
-
);
|
82 |
|
83 |
$notification_options = array(
|
84 |
'type' => Yoast_Notification::WARNING,
|
73 |
implode( ', ', $post_types )
|
74 |
);
|
75 |
$message .= PHP_EOL . PHP_EOL;
|
76 |
+
$message .= '<a class="button" href="' . admin_url( '?page=' . WPSEO_Admin::PAGE_IDENTIFIER . '&yoast_dismiss=' . $this->notification_identifier ) . '">' . __( 'Remove this message', 'wordpress-seo' ) . '</a>';
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
$notification_options = array(
|
79 |
'type' => Yoast_Notification::WARNING,
|
admin/taxonomy/class-taxonomy-columns.php
CHANGED
@@ -109,7 +109,7 @@ class WPSEO_Taxonomy_Columns {
|
|
109 |
* @return string|null
|
110 |
*/
|
111 |
private function get_taxonomy() {
|
112 |
-
if (
|
113 |
return FILTER_INPUT( INPUT_POST, 'taxonomy' );
|
114 |
}
|
115 |
|
109 |
* @return string|null
|
110 |
*/
|
111 |
private function get_taxonomy() {
|
112 |
+
if ( wp_doing_ajax() ) {
|
113 |
return FILTER_INPUT( INPUT_POST, 'taxonomy' );
|
114 |
}
|
115 |
|
admin/taxonomy/class-taxonomy.php
CHANGED
@@ -137,6 +137,7 @@ class WPSEO_Taxonomy {
|
|
137 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'replacevar-plugin', 'wpseoReplaceVarsL10n', $this->localize_replace_vars_script() );
|
138 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoSelect2Locale', WPSEO_Language_Utils::get_language( WPSEO_Language_Utils::get_user_locale() ) );
|
139 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoAdminL10n', WPSEO_Utils::get_admin_l10n() );
|
|
|
140 |
|
141 |
$asset_manager->enqueue_script( 'admin-media' );
|
142 |
|
137 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'replacevar-plugin', 'wpseoReplaceVarsL10n', $this->localize_replace_vars_script() );
|
138 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoSelect2Locale', WPSEO_Language_Utils::get_language( WPSEO_Language_Utils::get_user_locale() ) );
|
139 |
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoAdminL10n', WPSEO_Utils::get_admin_l10n() );
|
140 |
+
wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'metabox', 'wpseoFeaturesL10n', WPSEO_Utils::retrieve_enabled_features() );
|
141 |
|
142 |
$asset_manager->enqueue_script( 'admin-media' );
|
143 |
|
admin/views/js-templates-primary-term.php
CHANGED
@@ -33,11 +33,13 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
|
|
33 |
</script>
|
34 |
|
35 |
<script type="text/html" id="tmpl-primary-term-screen-reader">
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
43 |
</script>
|
33 |
</script>
|
34 |
|
35 |
<script type="text/html" id="tmpl-primary-term-screen-reader">
|
36 |
+
<?php
|
37 |
+
/* translators: %s is the taxonomy title. This will be shown to screenreaders */
|
38 |
+
$yoast_free_js_taxonomy_title = __( 'Primary %s', 'wordpress-seo' );
|
39 |
+
$yoast_free_js_taxonomy_title = sprintf(
|
40 |
+
'(' . $yoast_free_js_taxonomy_title . ')',
|
41 |
+
'{{data.taxonomy.title}}'
|
42 |
+
);
|
43 |
+
?>
|
44 |
+
<span class="screen-reader-text wpseo-primary-category-label"><?php echo esc_html( $yoast_free_js_taxonomy_title ); ?></span>
|
45 |
</script>
|
admin/views/licenses.php
CHANGED
@@ -155,7 +155,8 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
155 |
<?php if ( $has_valid_premium_subscription ) : ?>
|
156 |
<div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
|
157 |
<a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
|
158 |
-
class="yoast-link--license"
|
|
|
159 |
/* translators: %s expands to the extension title */
|
160 |
printf( esc_html( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
|
161 |
echo $new_tab_message;
|
@@ -178,8 +179,8 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
178 |
<a target="_blank" href="<?php echo esc_url( $premium_extension->get_buy_url() ); ?>"
|
179 |
class="yoast-button-upsell">
|
180 |
<?php
|
181 |
-
/* translators: $
|
182 |
-
printf( esc_html__( 'Buy %
|
183 |
echo $new_tab_message;
|
184 |
echo '<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
|
185 |
?>
|
@@ -209,14 +210,16 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
|
|
209 |
<hr class="yoast-hr" aria-hidden="true"/>
|
210 |
|
211 |
<section class="yoast-promo-extensions">
|
212 |
-
<h2
|
|
|
213 |
/* translators: %1$s expands to Yoast SEO */
|
214 |
$yoast_seo_extensions = sprintf( __( '%1$s extensions', 'wordpress-seo' ), 'Yoast SEO' );
|
215 |
$yoast_seo_extensions = '<span class="yoast-heading-highlight">' . $yoast_seo_extensions . '</span>';
|
216 |
|
217 |
/* translators: %1$s expands to Yoast SEO extensions */
|
218 |
printf( esc_html__( '%1$s to optimize your site even further', 'wordpress-seo' ), $yoast_seo_extensions );
|
219 |
-
|
|
|
220 |
|
221 |
<?php foreach ( $extensions as $slug => $extension ) : ?>
|
222 |
<section class="yoast-promoblock secondary yoast-promo-extension">
|
155 |
<?php if ( $has_valid_premium_subscription ) : ?>
|
156 |
<div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
|
157 |
<a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
|
158 |
+
class="yoast-link--license">
|
159 |
+
<?php
|
160 |
/* translators: %s expands to the extension title */
|
161 |
printf( esc_html( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
|
162 |
echo $new_tab_message;
|
179 |
<a target="_blank" href="<?php echo esc_url( $premium_extension->get_buy_url() ); ?>"
|
180 |
class="yoast-button-upsell">
|
181 |
<?php
|
182 |
+
/* translators: $s expands to Yoast SEO Premium */
|
183 |
+
printf( esc_html__( 'Buy %s', 'wordpress-seo' ), $premium_extension->get_title() );
|
184 |
echo $new_tab_message;
|
185 |
echo '<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
|
186 |
?>
|
210 |
<hr class="yoast-hr" aria-hidden="true"/>
|
211 |
|
212 |
<section class="yoast-promo-extensions">
|
213 |
+
<h2>
|
214 |
+
<?php
|
215 |
/* translators: %1$s expands to Yoast SEO */
|
216 |
$yoast_seo_extensions = sprintf( __( '%1$s extensions', 'wordpress-seo' ), 'Yoast SEO' );
|
217 |
$yoast_seo_extensions = '<span class="yoast-heading-highlight">' . $yoast_seo_extensions . '</span>';
|
218 |
|
219 |
/* translators: %1$s expands to Yoast SEO extensions */
|
220 |
printf( esc_html__( '%1$s to optimize your site even further', 'wordpress-seo' ), $yoast_seo_extensions );
|
221 |
+
?>
|
222 |
+
</h2>
|
223 |
|
224 |
<?php foreach ( $extensions as $slug => $extension ) : ?>
|
225 |
<section class="yoast-promoblock secondary yoast-promo-extension">
|
admin/views/tabs/metas/paper-content/general/knowledge-graph.php
CHANGED
@@ -11,7 +11,7 @@ $knowledge_graph_help = new WPSEO_Admin_Help_Panel(
|
|
11 |
'search-appearance-knowledge-graph',
|
12 |
__( 'Learn more about the knowledge graph setting', 'wordpress-seo' ),
|
13 |
sprintf(
|
14 |
-
|
15 |
__( 'This data is shown as metadata in your site. It is intended to appear in %1$sGoogle\'s Knowledge Graph%2$s. You can be either an organization, or a person.', 'wordpress-seo' ),
|
16 |
'<a href="' . esc_url( WPSEO_Shortlinker::get( 'https://yoa.st/1-p' ) ) . '" target="_blank" rel="noopener noreferrer">',
|
17 |
'</a>'
|
11 |
'search-appearance-knowledge-graph',
|
12 |
__( 'Learn more about the knowledge graph setting', 'wordpress-seo' ),
|
13 |
sprintf(
|
14 |
+
/* translators: %1$s opens the link to the Yoast.com article about Google's Knowledge Graph, %2$s closes the link, */
|
15 |
__( 'This data is shown as metadata in your site. It is intended to appear in %1$sGoogle\'s Knowledge Graph%2$s. You can be either an organization, or a person.', 'wordpress-seo' ),
|
16 |
'<a href="' . esc_url( WPSEO_Shortlinker::get( 'https://yoa.st/1-p' ) ) . '" target="_blank" rel="noopener noreferrer">',
|
17 |
'</a>'
|
admin/views/tabs/social/accounts.php
CHANGED
@@ -69,9 +69,18 @@ if ( $company_or_person === 'person' ) {
|
|
69 |
echo '<p>';
|
70 |
$user_id = WPSEO_Options::get( 'company_or_person_user_id', '' );
|
71 |
$person = get_userdata( $user_id );
|
72 |
-
printf(
|
|
|
|
|
|
|
|
|
73 |
echo ' ';
|
74 |
-
printf(
|
|
|
|
|
|
|
|
|
|
|
75 |
echo '</p></div>';
|
76 |
|
77 |
// Organization social fields should still be rendered, because other wise the values are lost on save.
|
69 |
echo '<p>';
|
70 |
$user_id = WPSEO_Options::get( 'company_or_person_user_id', '' );
|
71 |
$person = get_userdata( $user_id );
|
72 |
+
printf(
|
73 |
+
/* translators: 1: link to edit user page. */
|
74 |
+
esc_html__( 'To change the social accounts used for your site, update the details for %1$s.', 'wordpress-seo' ),
|
75 |
+
'<a href="' . esc_url( admin_url( 'user-edit.php?user_id=' . $user_id ) ) . '">' . esc_html( $person->display_name ) . '</a>'
|
76 |
+
);
|
77 |
echo ' ';
|
78 |
+
printf(
|
79 |
+
/* translators: 1: link tag to the relevant WPSEO admin page; 2: link close tag. */
|
80 |
+
esc_html__( 'To make your site represent a Company or Organization go to %1$sSearch Appearance%2$s and set Organization or Person to "Organization".', 'wordpress-seo' ),
|
81 |
+
'<a href="' . esc_url( admin_url( 'admin.php?page=wpseo_titles' ) ) . '">',
|
82 |
+
'</a>'
|
83 |
+
);
|
84 |
echo '</p></div>';
|
85 |
|
86 |
// Organization social fields should still be rendered, because other wise the values are lost on save.
|
admin/views/tabs/social/pinterest.php
CHANGED
@@ -28,7 +28,7 @@ echo '<p>';
|
|
28 |
printf(
|
29 |
/* translators: %1$s / %2$s expands to a link to pinterest.com's help page. */
|
30 |
esc_html__( 'To %1$sconfirm your site with Pinterest%2$s, add the meta tag here:', 'wordpress-seo' ),
|
31 |
-
'<a target="_blank" href="https://pinterest.com/settings
|
32 |
'</a>'
|
33 |
);
|
34 |
echo '</p>';
|
28 |
printf(
|
29 |
/* translators: %1$s / %2$s expands to a link to pinterest.com's help page. */
|
30 |
esc_html__( 'To %1$sconfirm your site with Pinterest%2$s, add the meta tag here:', 'wordpress-seo' ),
|
31 |
+
'<a target="_blank" href="https://www.pinterest.com/settings/claim">',
|
32 |
'</a>'
|
33 |
);
|
34 |
echo '</p>';
|
css/dist/{admin-global-1111-rtl.min.css → admin-global-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{admin-global-1111.min.css → admin-global-1120.min.css}
RENAMED
File without changes
|
css/dist/{adminbar-1111-rtl.min.css → adminbar-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{adminbar-1111.min.css → adminbar-1120.min.css}
RENAMED
File without changes
|
css/dist/{alerts-1111-rtl.min.css → alerts-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{alerts-1111.min.css → alerts-1120.min.css}
RENAMED
File without changes
|
css/dist/{dashboard-1111-rtl.min.css → dashboard-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{dashboard-1111.min.css → dashboard-1120.min.css}
RENAMED
File without changes
|
css/dist/{edit-page-1111-rtl.min.css → edit-page-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{edit-page-1111.min.css → edit-page-1120.min.css}
RENAMED
File without changes
|
css/dist/{featured-image-1111-rtl.min.css → featured-image-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{featured-image-1111.min.css → featured-image-1120.min.css}
RENAMED
File without changes
|
css/dist/{filter-explanation-1111-rtl.min.css → filter-explanation-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{filter-explanation-1111.min.css → filter-explanation-1120.min.css}
RENAMED
File without changes
|
css/dist/{inside-editor-1111-rtl.min.css → inside-editor-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{inside-editor-1111.min.css → inside-editor-1120.min.css}
RENAMED
File without changes
|
css/dist/{metabox-1111-rtl.min.css → metabox-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{metabox-1111.min.css → metabox-1120.min.css}
RENAMED
File without changes
|
css/dist/{metabox-primary-category-1111-rtl.min.css → metabox-primary-category-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{metabox-primary-category-1111.min.css → metabox-primary-category-1120.min.css}
RENAMED
File without changes
|
css/dist/{search-appearance-1111-rtl.min.css → search-appearance-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{search-appearance-1111.min.css → search-appearance-1120.min.css}
RENAMED
File without changes
|
css/dist/{structured-data-blocks-1111-rtl.min.css → structured-data-blocks-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{structured-data-blocks-1111.min.css → structured-data-blocks-1120.min.css}
RENAMED
File without changes
|
css/dist/{toggle-switch-1111-rtl.min.css → toggle-switch-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{toggle-switch-1111.min.css → toggle-switch-1120.min.css}
RENAMED
File without changes
|
css/dist/{wpseo-dismissible-1111-rtl.min.css → wpseo-dismissible-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{wpseo-dismissible-1111.min.css → wpseo-dismissible-1120.min.css}
RENAMED
File without changes
|
css/dist/yoast-components-1111-rtl.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.yoast-wizard--step--container:focus,a{outline:0}.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:right;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-right:-7px;padding-left:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;right:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:right;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em 0 .3em .7em;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;right:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:right;width:30px!important;margin:0 0 .5em 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.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-wizard-notice__error{margin-bottom:15px;padding:12px;border-right:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-left:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 10px 0 16px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-left:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-right:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-right:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-right:0;margin-left:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-left:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-right:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-left:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-right:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-right:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;right:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
|
|
css/dist/yoast-components-1111.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.yoast-wizard--step--container:focus,a{outline:0}.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:left;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-left:-7px;padding-right:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;left:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:left;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em .7em .3em 0;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;left:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:left;width:30px!important;margin:0 5px .5em 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.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-wizard-notice__error{margin-bottom:15px;padding:12px;border-left:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-right:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 16px 0 10px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-right:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-left:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-left:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-left:0;margin-right:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-right:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-left:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-right:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-left:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-left:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
|
|
css/dist/yoast-components-1120-rtl.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;outline:0;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:right;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin:1em -8px 0;padding:8px;background:0 0;color:#0073aa;border:none;font:inherit;cursor:pointer}.yoast-wizard--button:after{content:"";display:block;height:0;border-bottom:1px solid #0073aa}.yoast-wizard--button:focus{outline:#5b9dd9 solid 1px;box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-right:-7px;padding-left:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container:focus{outline:0}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;right:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:right;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em 0 .3em .7em;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;right:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:right;width:30px!important;margin:0 0 .5em 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.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-wizard-notice__error{margin-bottom:15px;padding:12px;border-right:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-left:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 10px 0 16px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-left:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-right:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-right:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-right:0;margin-left:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-left:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-right:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-left:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-right:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-right:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;right:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
|
css/dist/yoast-components-1120.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;outline:0;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:left;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin:1em -8px 0;padding:8px;background:0 0;color:#0073aa;border:none;font:inherit;cursor:pointer}.yoast-wizard--button:after{content:"";display:block;height:0;border-bottom:1px solid #0073aa}.yoast-wizard--button:focus{outline:#5b9dd9 solid 1px;box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-left:-7px;padding-right:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container:focus{outline:0}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;left:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:left;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em .7em .3em 0;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;left:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:left;width:30px!important;margin:0 5px .5em 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.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-wizard-notice__error{margin-bottom:15px;padding:12px;border-left:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-right:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 16px 0 10px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-right:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-left:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-left:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-left:0;margin-right:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-right:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-left:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-right:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-left:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-left:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
|
css/dist/{yoast-extensions-1111-rtl.min.css → yoast-extensions-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yoast-extensions-1111.min.css → yoast-extensions-1120.min.css}
RENAMED
File without changes
|
css/dist/{yst_plugin_tools-1111-rtl.min.css → yst_plugin_tools-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yst_plugin_tools-1111.min.css → yst_plugin_tools-1120.min.css}
RENAMED
File without changes
|
css/dist/{yst_seo_score-1111-rtl.min.css → yst_seo_score-1120-rtl.min.css}
RENAMED
File without changes
|
css/dist/{yst_seo_score-1111.min.css → yst_seo_score-1120.min.css}
RENAMED
File without changes
|
frontend/class-frontend.php
CHANGED
@@ -1914,6 +1914,7 @@ class WPSEO_Frontend {
|
|
1914 |
* Output the rel=publisher code on every page of the site.
|
1915 |
*
|
1916 |
* @deprecated 10.1.3
|
|
|
1917 |
*
|
1918 |
* @return boolean Boolean indicating whether the publisher link was printed.
|
1919 |
*/
|
1914 |
* Output the rel=publisher code on every page of the site.
|
1915 |
*
|
1916 |
* @deprecated 10.1.3
|
1917 |
+
* @codeCoverageIgnore
|
1918 |
*
|
1919 |
* @return boolean Boolean indicating whether the publisher link was printed.
|
1920 |
*/
|
frontend/class-opengraph-image.php
CHANGED
@@ -317,7 +317,7 @@ class WPSEO_OpenGraph_Image {
|
|
317 |
return;
|
318 |
}
|
319 |
|
320 |
-
$this->add_first_usable_content_image(
|
321 |
}
|
322 |
|
323 |
/**
|
@@ -685,20 +685,14 @@ class WPSEO_OpenGraph_Image {
|
|
685 |
/**
|
686 |
* Adds the first usable attachment image from the post content.
|
687 |
*
|
688 |
-
* @param
|
689 |
*
|
690 |
* @return void
|
691 |
*/
|
692 |
-
private function add_first_usable_content_image( $
|
693 |
-
$
|
694 |
-
$images = $image_finder->get_images( $post->ID, $post );
|
695 |
|
696 |
-
if (
|
697 |
-
return;
|
698 |
-
}
|
699 |
-
|
700 |
-
$image_url = reset( $images );
|
701 |
-
if ( ! $image_url ) {
|
702 |
return;
|
703 |
}
|
704 |
|
317 |
return;
|
318 |
}
|
319 |
|
320 |
+
$this->add_first_usable_content_image( $post_id );
|
321 |
}
|
322 |
|
323 |
/**
|
685 |
/**
|
686 |
* Adds the first usable attachment image from the post content.
|
687 |
*
|
688 |
+
* @param int $post_id The post id.
|
689 |
*
|
690 |
* @return void
|
691 |
*/
|
692 |
+
private function add_first_usable_content_image( $post_id ) {
|
693 |
+
$image_url = WPSEO_Image_Utils::get_first_usable_content_image_for_post( $post_id );
|
|
|
694 |
|
695 |
+
if ( $image_url === null || empty( $image_url ) ) {
|
|
|
|
|
|
|
|
|
|
|
696 |
return;
|
697 |
}
|
698 |
|
frontend/class-opengraph.php
CHANGED
@@ -23,8 +23,6 @@ class WPSEO_OpenGraph {
|
|
23 |
add_filter( 'fb_meta_tags', array( $this, 'facebook_filter' ), 10, 1 );
|
24 |
}
|
25 |
else {
|
26 |
-
add_filter( 'language_attributes', array( $this, 'add_opengraph_namespace' ), 15 );
|
27 |
-
|
28 |
add_action( 'wpseo_opengraph', array( $this, 'locale' ), 1 );
|
29 |
add_action( 'wpseo_opengraph', array( $this, 'type' ), 5 );
|
30 |
add_action( 'wpseo_opengraph', array( $this, 'og_title' ), 10 );
|
@@ -107,45 +105,6 @@ class WPSEO_OpenGraph {
|
|
107 |
return $meta_tags;
|
108 |
}
|
109 |
|
110 |
-
/**
|
111 |
-
* Filter for the namespace, adding the OpenGraph namespace.
|
112 |
-
*
|
113 |
-
* @link https://developers.facebook.com/docs/web/tutorials/scrumptious/open-graph-object/
|
114 |
-
*
|
115 |
-
* @param string $input The input namespace string.
|
116 |
-
*
|
117 |
-
* @return string
|
118 |
-
*/
|
119 |
-
public function add_opengraph_namespace( $input ) {
|
120 |
-
$namespaces = array(
|
121 |
-
'og: http://ogp.me/ns#',
|
122 |
-
);
|
123 |
-
|
124 |
-
/**
|
125 |
-
* Allow for adding additional namespaces to the <html> prefix attributes.
|
126 |
-
*
|
127 |
-
* @since 3.9.0
|
128 |
-
*
|
129 |
-
* @param array $namespaces Currently registered namespaces which are to be
|
130 |
-
* added to the prefix attribute.
|
131 |
-
* Namespaces are strings and have the following syntax:
|
132 |
-
* ns: http://url.to.namespace/definition
|
133 |
-
*/
|
134 |
-
$namespaces = apply_filters( 'wpseo_html_namespaces', $namespaces );
|
135 |
-
$namespace_string = implode( ' ', array_unique( $namespaces ) );
|
136 |
-
|
137 |
-
if ( strpos( $input, ' prefix=' ) !== false ) {
|
138 |
-
$regex = '`prefix=([\'"])(.+?)\1`';
|
139 |
-
$replace = 'prefix="$2 ' . $namespace_string . '"';
|
140 |
-
$input = preg_replace( $regex, $replace, $input );
|
141 |
-
}
|
142 |
-
else {
|
143 |
-
$input .= ' prefix="' . $namespace_string . '"';
|
144 |
-
}
|
145 |
-
|
146 |
-
return $input;
|
147 |
-
}
|
148 |
-
|
149 |
/**
|
150 |
* Outputs the authors FB page.
|
151 |
*
|
@@ -180,6 +139,7 @@ class WPSEO_OpenGraph {
|
|
180 |
*
|
181 |
* @link https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/
|
182 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
|
|
183 |
* @return boolean
|
184 |
*/
|
185 |
public function website_facebook() {
|
@@ -262,6 +222,7 @@ class WPSEO_OpenGraph {
|
|
262 |
* Outputs the canonical URL as OpenGraph URL, which consolidates likes and shares.
|
263 |
*
|
264 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
|
|
265 |
* @return boolean
|
266 |
*/
|
267 |
public function url() {
|
@@ -298,7 +259,6 @@ class WPSEO_OpenGraph {
|
|
298 |
* Last update/compare with FB list done on 2015-03-16 by Rarst.
|
299 |
*
|
300 |
* @link http://www.facebook.com/translations/FacebookLocales.xml for the list of supported locales.
|
301 |
-
*
|
302 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
303 |
*
|
304 |
* @param bool $echo Whether to echo or return the locale.
|
@@ -664,6 +624,7 @@ class WPSEO_OpenGraph {
|
|
664 |
* Output the article tags as article:tag tags.
|
665 |
*
|
666 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
|
|
667 |
* @return boolean
|
668 |
*/
|
669 |
public function tags() {
|
@@ -688,6 +649,7 @@ class WPSEO_OpenGraph {
|
|
688 |
* Output the article category as an article:section tag.
|
689 |
*
|
690 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
|
|
691 |
* @return boolean;
|
692 |
*/
|
693 |
public function category() {
|
@@ -727,6 +689,7 @@ class WPSEO_OpenGraph {
|
|
727 |
* Output the article publish and last modification date.
|
728 |
*
|
729 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
|
|
730 |
* @return boolean;
|
731 |
*/
|
732 |
public function publish_date() {
|
@@ -778,6 +741,7 @@ class WPSEO_OpenGraph {
|
|
778 |
* Outputs the site owner.
|
779 |
*
|
780 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
|
|
781 |
* @return void
|
782 |
*
|
783 |
* @deprecated 7.1
|
23 |
add_filter( 'fb_meta_tags', array( $this, 'facebook_filter' ), 10, 1 );
|
24 |
}
|
25 |
else {
|
|
|
|
|
26 |
add_action( 'wpseo_opengraph', array( $this, 'locale' ), 1 );
|
27 |
add_action( 'wpseo_opengraph', array( $this, 'type' ), 5 );
|
28 |
add_action( 'wpseo_opengraph', array( $this, 'og_title' ), 10 );
|
105 |
return $meta_tags;
|
106 |
}
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
/**
|
109 |
* Outputs the authors FB page.
|
110 |
*
|
139 |
*
|
140 |
* @link https://developers.facebook.com/blog/post/2013/06/19/platform-updates--new-open-graph-tags-for-media-publishers-and-more/
|
141 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
142 |
+
*
|
143 |
* @return boolean
|
144 |
*/
|
145 |
public function website_facebook() {
|
222 |
* Outputs the canonical URL as OpenGraph URL, which consolidates likes and shares.
|
223 |
*
|
224 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
225 |
+
*
|
226 |
* @return boolean
|
227 |
*/
|
228 |
public function url() {
|
259 |
* Last update/compare with FB list done on 2015-03-16 by Rarst.
|
260 |
*
|
261 |
* @link http://www.facebook.com/translations/FacebookLocales.xml for the list of supported locales.
|
|
|
262 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
263 |
*
|
264 |
* @param bool $echo Whether to echo or return the locale.
|
624 |
* Output the article tags as article:tag tags.
|
625 |
*
|
626 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
627 |
+
*
|
628 |
* @return boolean
|
629 |
*/
|
630 |
public function tags() {
|
649 |
* Output the article category as an article:section tag.
|
650 |
*
|
651 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
652 |
+
*
|
653 |
* @return boolean;
|
654 |
*/
|
655 |
public function category() {
|
689 |
* Output the article publish and last modification date.
|
690 |
*
|
691 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
692 |
+
*
|
693 |
* @return boolean;
|
694 |
*/
|
695 |
public function publish_date() {
|
741 |
* Outputs the site owner.
|
742 |
*
|
743 |
* @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
|
744 |
+
*
|
745 |
* @return void
|
746 |
*
|
747 |
* @deprecated 7.1
|
frontend/class-twitter.php
CHANGED
@@ -630,15 +630,9 @@ class WPSEO_Twitter {
|
|
630 |
* @return bool True when images output succeeded.
|
631 |
*/
|
632 |
private function image_from_content_output( $post_id ) {
|
633 |
-
$
|
634 |
-
$images = $image_finder->get_images( $post_id );
|
635 |
|
636 |
-
if (
|
637 |
-
return false;
|
638 |
-
}
|
639 |
-
|
640 |
-
$image_url = reset( $images );
|
641 |
-
if ( ! $image_url ) {
|
642 |
return false;
|
643 |
}
|
644 |
|
630 |
* @return bool True when images output succeeded.
|
631 |
*/
|
632 |
private function image_from_content_output( $post_id ) {
|
633 |
+
$image_url = WPSEO_Image_Utils::get_first_usable_content_image_for_post( $post_id );
|
|
|
634 |
|
635 |
+
if ( $image_url === null || empty( $image_url ) ) {
|
|
|
|
|
|
|
|
|
|
|
636 |
return false;
|
637 |
}
|
638 |
|
frontend/schema/class-schema-article.php
CHANGED
@@ -33,14 +33,11 @@ class WPSEO_Schema_Article implements WPSEO_Graph_Piece {
|
|
33 |
* @return bool
|
34 |
*/
|
35 |
public function is_needed() {
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
* @api string[] $post_types The post types for which we output Article.
|
40 |
-
*/
|
41 |
-
$post_types = apply_filters( 'wpseo_schema_article_post_types', array( 'post' ) );
|
42 |
|
43 |
-
return
|
44 |
}
|
45 |
|
46 |
/**
|
@@ -74,6 +71,28 @@ class WPSEO_Schema_Article implements WPSEO_Graph_Piece {
|
|
74 |
return $data;
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
/**
|
78 |
* Determine the proper author URL.
|
79 |
*
|
33 |
* @return bool
|
34 |
*/
|
35 |
public function is_needed() {
|
36 |
+
if ( ! is_singular() ) {
|
37 |
+
return false;
|
38 |
+
}
|
|
|
|
|
|
|
39 |
|
40 |
+
return self::is_article_post_type( get_post_type() );
|
41 |
}
|
42 |
|
43 |
/**
|
71 |
return $data;
|
72 |
}
|
73 |
|
74 |
+
/**
|
75 |
+
* Determines whether a given post type should have Article schema.
|
76 |
+
*
|
77 |
+
* @param string $post_type Post type to check.
|
78 |
+
*
|
79 |
+
* @return bool True if it has article schema, false if not.
|
80 |
+
*/
|
81 |
+
public static function is_article_post_type( $post_type = null ) {
|
82 |
+
if ( is_null( $post_type ) ) {
|
83 |
+
$post_type = get_post_type();
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Filter: 'wpseo_schema_article_post_types' - Allow changing for which post types we output Article schema.
|
88 |
+
*
|
89 |
+
* @api string[] $post_types The post types for which we output Article.
|
90 |
+
*/
|
91 |
+
$post_types = apply_filters( 'wpseo_schema_article_post_types', array( 'post' ) );
|
92 |
+
|
93 |
+
return in_array( $post_type, $post_types );
|
94 |
+
}
|
95 |
+
|
96 |
/**
|
97 |
* Determine the proper author URL.
|
98 |
*
|
frontend/schema/class-schema-author.php
CHANGED
@@ -54,7 +54,6 @@ class WPSEO_Schema_Author extends WPSEO_Schema_Person implements WPSEO_Graph_Pie
|
|
54 |
return false;
|
55 |
}
|
56 |
|
57 |
-
|
58 |
/**
|
59 |
* Builds our array of Schema Person data for a given user ID.
|
60 |
*
|
@@ -105,7 +104,7 @@ class WPSEO_Schema_Author extends WPSEO_Schema_Person implements WPSEO_Graph_Pie
|
|
105 |
$user_id = get_queried_object_id();
|
106 |
break;
|
107 |
default:
|
108 |
-
$post
|
109 |
$user_id = (int) $post->post_author;
|
110 |
break;
|
111 |
}
|
54 |
return false;
|
55 |
}
|
56 |
|
|
|
57 |
/**
|
58 |
* Builds our array of Schema Person data for a given user ID.
|
59 |
*
|
104 |
$user_id = get_queried_object_id();
|
105 |
break;
|
106 |
default:
|
107 |
+
$post = get_post( $this->context->id );
|
108 |
$user_id = (int) $post->post_author;
|
109 |
break;
|
110 |
}
|
frontend/schema/class-schema-breadcrumb.php
CHANGED
@@ -140,9 +140,12 @@ class WPSEO_Schema_Breadcrumb implements WPSEO_Graph_Piece {
|
|
140 |
*/
|
141 |
private function add_paginated_state() {
|
142 |
$this->index++;
|
143 |
-
return $this->add_breadcrumb(
|
144 |
-
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
147 |
}
|
148 |
}
|
140 |
*/
|
141 |
private function add_paginated_state() {
|
142 |
$this->index++;
|
143 |
+
return $this->add_breadcrumb(
|
144 |
+
$this->index,
|
145 |
+
array(
|
146 |
+
'url' => $this->context->canonical,
|
147 |
+
'text' => $this->context->title,
|
148 |
+
)
|
149 |
+
);
|
150 |
}
|
151 |
}
|
frontend/schema/class-schema-image.php
CHANGED
@@ -123,8 +123,6 @@ class WPSEO_Schema_Image {
|
|
123 |
if ( ! empty( $caption ) ) {
|
124 |
$this->data['caption'] = $caption;
|
125 |
}
|
126 |
-
|
127 |
-
return;
|
128 |
}
|
129 |
|
130 |
/**
|
123 |
if ( ! empty( $caption ) ) {
|
124 |
$this->data['caption'] = $caption;
|
125 |
}
|
|
|
|
|
126 |
}
|
127 |
|
128 |
/**
|
frontend/schema/class-schema-person.php
CHANGED
@@ -19,7 +19,25 @@ class WPSEO_Schema_Person implements WPSEO_Graph_Piece {
|
|
19 |
private $context;
|
20 |
|
21 |
/**
|
22 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
*
|
24 |
* @param WPSEO_Schema_Context $context A value object with context variables.
|
25 |
*/
|
@@ -77,21 +95,18 @@ class WPSEO_Schema_Person implements WPSEO_Graph_Piece {
|
|
77 |
*
|
78 |
* @param int $user_id User ID.
|
79 |
*
|
80 |
-
* @return
|
81 |
*/
|
82 |
protected function get_social_profiles( $user_id ) {
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
'tumblr',
|
93 |
-
'wikipedia',
|
94 |
-
);
|
95 |
$output = array();
|
96 |
foreach ( $social_profiles as $profile ) {
|
97 |
$social_url = $this->url_social_site( $profile, $user_id );
|
19 |
private $context;
|
20 |
|
21 |
/**
|
22 |
+
* Array of the social profiles we display for a Person.
|
23 |
+
*
|
24 |
+
* @var string[]
|
25 |
+
*/
|
26 |
+
private $social_profiles = array(
|
27 |
+
'facebook',
|
28 |
+
'instagram',
|
29 |
+
'linkedin',
|
30 |
+
'pinterest',
|
31 |
+
'twitter',
|
32 |
+
'myspace',
|
33 |
+
'youtube',
|
34 |
+
'soundcloud',
|
35 |
+
'tumblr',
|
36 |
+
'wikipedia',
|
37 |
+
);
|
38 |
+
|
39 |
+
/**
|
40 |
+
* WPSEO_Schema_Person constructor.
|
41 |
*
|
42 |
* @param WPSEO_Schema_Context $context A value object with context variables.
|
43 |
*/
|
95 |
*
|
96 |
* @param int $user_id User ID.
|
97 |
*
|
98 |
+
* @return string[] $output A list of social profiles.
|
99 |
*/
|
100 |
protected function get_social_profiles( $user_id ) {
|
101 |
+
/**
|
102 |
+
* Filter: 'wpseo_schema_person_social_profiles' - Allows filtering of social profiles per user.
|
103 |
+
*
|
104 |
+
* @param int $user_id The current user we're grabbing social profiles for.
|
105 |
+
*
|
106 |
+
* @api string[] $social_profiles The array of social profiles to retrieve. Each should be a user meta field
|
107 |
+
* key. As they are retrieved using the WordPress function `get_the_author_meta`.
|
108 |
+
*/
|
109 |
+
$social_profiles = apply_filters( 'wpseo_schema_person_social_profiles', $this->social_profiles, $user_id );
|
|
|
|
|
|
|
110 |
$output = array();
|
111 |
foreach ( $social_profiles as $profile ) {
|
112 |
$social_url = $this->url_social_site( $profile, $user_id );
|
frontend/schema/class-schema-webpage.php
CHANGED
@@ -69,7 +69,7 @@ class WPSEO_Schema_WebPage implements WPSEO_Graph_Piece {
|
|
69 |
}
|
70 |
|
71 |
if ( is_singular() ) {
|
72 |
-
$data = $this->
|
73 |
|
74 |
$post = get_post( $this->context->id );
|
75 |
$data['datePublished'] = mysql2date( DATE_W3C, $post->post_date_gmt, false );
|
@@ -135,24 +135,66 @@ class WPSEO_Schema_WebPage implements WPSEO_Graph_Piece {
|
|
135 |
}
|
136 |
|
137 |
/**
|
138 |
-
* Adds a featured image to the schema if there is one.
|
139 |
*
|
140 |
* @param array $data WebPage Schema.
|
141 |
*
|
142 |
* @return array $data WebPage Schema.
|
143 |
*/
|
144 |
-
private function
|
145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
return $data;
|
147 |
}
|
148 |
|
149 |
-
$
|
150 |
-
$schema_image = new WPSEO_Schema_Image( $id );
|
151 |
-
$data['image'] = $schema_image->generate_from_attachment_id( get_post_thumbnail_id() );
|
152 |
$data['primaryImageOfPage'] = array(
|
153 |
-
'@id' => $
|
154 |
);
|
155 |
|
156 |
return $data;
|
157 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
}
|
69 |
}
|
70 |
|
71 |
if ( is_singular() ) {
|
72 |
+
$data = $this->add_image( $data );
|
73 |
|
74 |
$post = get_post( $this->context->id );
|
75 |
$data['datePublished'] = mysql2date( DATE_W3C, $post->post_date_gmt, false );
|
135 |
}
|
136 |
|
137 |
/**
|
138 |
+
* Adds a featured image to the schema if there is one, if not falls back to the first image on the page.
|
139 |
*
|
140 |
* @param array $data WebPage Schema.
|
141 |
*
|
142 |
* @return array $data WebPage Schema.
|
143 |
*/
|
144 |
+
private function add_image( $data ) {
|
145 |
+
$image_id = $this->context->canonical . WPSEO_Schema_IDs::PRIMARY_IMAGE_HASH;
|
146 |
+
|
147 |
+
$image_schema = $this->get_featured_image( $this->context->id, $image_id );
|
148 |
+
|
149 |
+
if ( $image_schema === null ) {
|
150 |
+
$image_schema = $this->get_first_content_image( $this->context->id, $image_id );
|
151 |
+
}
|
152 |
+
|
153 |
+
if ( $image_schema === null ) {
|
154 |
return $data;
|
155 |
}
|
156 |
|
157 |
+
$data['image'] = $image_schema;
|
|
|
|
|
158 |
$data['primaryImageOfPage'] = array(
|
159 |
+
'@id' => $image_id,
|
160 |
);
|
161 |
|
162 |
return $data;
|
163 |
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Gets the image schema for the web page based on the featured image.
|
167 |
+
*
|
168 |
+
* @param int $post_id The post id.
|
169 |
+
* @param string $image_id The image schema id.
|
170 |
+
*
|
171 |
+
* @return array|null The image schema object and null if there is no featured image.
|
172 |
+
*/
|
173 |
+
private function get_featured_image( $post_id, $image_id ) {
|
174 |
+
if ( ! has_post_thumbnail( $post_id ) ) {
|
175 |
+
return null;
|
176 |
+
}
|
177 |
+
|
178 |
+
$schema_image = new WPSEO_Schema_Image( $image_id );
|
179 |
+
return $schema_image->generate_from_attachment_id( get_post_thumbnail_id() );
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Gets the image schema for the web page based on the first content image image.
|
184 |
+
*
|
185 |
+
* @param int $post_id The post id.
|
186 |
+
* @param string $image_id The image schema id.
|
187 |
+
*
|
188 |
+
* @return array|null The image schema object and null if there is no image in the content.
|
189 |
+
*/
|
190 |
+
private function get_first_content_image( $post_id, $image_id ) {
|
191 |
+
$image_url = WPSEO_Image_Utils::get_first_usable_content_image_for_post( $post_id );
|
192 |
+
|
193 |
+
if ( $image_url === null ) {
|
194 |
+
return null;
|
195 |
+
}
|
196 |
+
|
197 |
+
$schema_image = new WPSEO_Schema_Image( $image_id );
|
198 |
+
return $schema_image->generate_from_url( $image_url );
|
199 |
+
}
|
200 |
}
|
frontend/schema/class-schema.php
CHANGED
@@ -13,6 +13,7 @@
|
|
13 |
* @since 1.8
|
14 |
*/
|
15 |
class WPSEO_Schema implements WPSEO_WordPress_Integration {
|
|
|
16 |
/**
|
17 |
* Registers the hooks.
|
18 |
*/
|
@@ -55,7 +56,15 @@ class WPSEO_Schema implements WPSEO_WordPress_Integration {
|
|
55 |
$graph = array();
|
56 |
|
57 |
foreach ( $this->get_graph_pieces() as $piece ) {
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
continue;
|
60 |
}
|
61 |
|
@@ -66,7 +75,6 @@ class WPSEO_Schema implements WPSEO_WordPress_Integration {
|
|
66 |
*
|
67 |
* @api array $graph_piece The graph piece to filter.
|
68 |
*/
|
69 |
-
$class = str_replace( 'wpseo_schema_', '', strtolower( get_class( $piece ) ) );
|
70 |
$graph_piece = apply_filters( 'wpseo_schema_' . $class, $graph_piece );
|
71 |
if ( is_array( $graph_piece ) ) {
|
72 |
$graph[] = $graph_piece;
|
13 |
* @since 1.8
|
14 |
*/
|
15 |
class WPSEO_Schema implements WPSEO_WordPress_Integration {
|
16 |
+
|
17 |
/**
|
18 |
* Registers the hooks.
|
19 |
*/
|
56 |
$graph = array();
|
57 |
|
58 |
foreach ( $this->get_graph_pieces() as $piece ) {
|
59 |
+
$class = str_replace( 'wpseo_schema_', '', strtolower( get_class( $piece ) ) );
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Filter: 'wpseo_schema_needs_<class name>' - Allows changing which graph pieces we output.
|
63 |
+
*
|
64 |
+
* @api bool $is_needed Whether or not to show a graph piece.
|
65 |
+
*/
|
66 |
+
$is_needed = apply_filters( 'wpseo_schema_needs_' . $class, $piece->is_needed() );
|
67 |
+
if ( ! $is_needed ) {
|
68 |
continue;
|
69 |
}
|
70 |
|
75 |
*
|
76 |
* @api array $graph_piece The graph piece to filter.
|
77 |
*/
|
|
|
78 |
$graph_piece = apply_filters( 'wpseo_schema_' . $class, $graph_piece );
|
79 |
if ( is_array( $graph_piece ) ) {
|
80 |
$graph[] = $graph_piece;
|
frontend/schema/interface-wpseo-graph-piece.php
CHANGED
@@ -12,6 +12,7 @@ if ( ! interface_exists( 'WPSEO_Graph_Piece' ) ) {
|
|
12 |
* @since 10.2
|
13 |
*/
|
14 |
interface WPSEO_Graph_Piece {
|
|
|
15 |
/**
|
16 |
* Add your piece of the graph.
|
17 |
*
|
12 |
* @since 10.2
|
13 |
*/
|
14 |
interface WPSEO_Graph_Piece {
|
15 |
+
|
16 |
/**
|
17 |
* Add your piece of the graph.
|
18 |
*
|
inc/class-addon-manager.php
CHANGED
@@ -110,7 +110,6 @@ class WPSEO_Addon_Manager {
|
|
110 |
}
|
111 |
|
112 |
return $this->get_site_information_default();
|
113 |
-
|
114 |
}
|
115 |
|
116 |
/**
|
110 |
}
|
111 |
|
112 |
return $this->get_site_information_default();
|
|
|
113 |
}
|
114 |
|
115 |
/**
|
inc/class-wpseo-image-utils.php
CHANGED
@@ -358,4 +358,29 @@ class WPSEO_Image_Utils {
|
|
358 |
|
359 |
return true;
|
360 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
}
|
358 |
|
359 |
return true;
|
360 |
}
|
361 |
+
|
362 |
+
/**
|
363 |
+
* Gets the post's first usable content image. Null if none is available.
|
364 |
+
*
|
365 |
+
* @param int $post_id The post id.
|
366 |
+
*
|
367 |
+
* @return string|null The image URL.
|
368 |
+
*/
|
369 |
+
public static function get_first_usable_content_image_for_post( $post_id = null ) {
|
370 |
+
$post = get_post( $post_id );
|
371 |
+
|
372 |
+
$image_finder = new WPSEO_Content_Images();
|
373 |
+
$images = $image_finder->get_images( $post->ID, $post );
|
374 |
+
|
375 |
+
if ( ! is_array( $images ) || empty( $images ) ) {
|
376 |
+
return null;
|
377 |
+
}
|
378 |
+
|
379 |
+
$image_url = reset( $images );
|
380 |
+
if ( ! $image_url ) {
|
381 |
+
return null;
|
382 |
+
}
|
383 |
+
|
384 |
+
return $image_url;
|
385 |
+
}
|
386 |
}
|
inc/class-wpseo-meta.php
CHANGED
@@ -33,10 +33,10 @@ class WPSEO_Meta {
|
|
33 |
/**
|
34 |
* Prefix for all WPSEO meta values in the database.
|
35 |
*
|
36 |
-
* @var string
|
37 |
-
*
|
38 |
* {@internal If at any point this would change, quite apart from an upgrade routine,
|
39 |
* this also will need to be changed in the wpml-config.xml file.}}
|
|
|
|
|
40 |
*/
|
41 |
public static $meta_prefix = '_yoast_wpseo_';
|
42 |
|
@@ -68,41 +68,40 @@ class WPSEO_Meta {
|
|
68 |
/**
|
69 |
* Meta box field definitions for the meta box form.
|
70 |
*
|
71 |
-
* @
|
72 |
-
*
|
|
|
|
|
|
|
|
|
|
|
73 |
* (required) 'type' => (string) field type. i.e. text / textarea / checkbox /
|
74 |
-
* radio / select / multiselect / upload etc
|
75 |
-
* (required) 'title' => (string) table row title
|
76 |
-
* (recommended) 'default_value' => (string|array) default value for the field
|
77 |
* IMPORTANT:
|
78 |
* - if the field has options, the default has to be the
|
79 |
-
* key of one of the options
|
80 |
* - if the field is a text field, the default **has** to be
|
81 |
* an empty string as otherwise the user can't save
|
82 |
-
* an empty value/delete the meta value
|
83 |
* - if the field is a checkbox, the only valid values
|
84 |
-
* are 'on' or 'off'
|
85 |
* (semi-required) 'options' => (array) options for used with (multi-)select and radio
|
86 |
-
* fields, required if that's the field type
|
87 |
-
* key = (string) value which will be saved to db
|
88 |
-
* value = (string) text label for the option
|
89 |
* (optional) 'autocomplete' => (bool) whether autocomplete is on for text fields,
|
90 |
-
* defaults to true
|
91 |
-
* (optional) 'class' => (string) classname(s) to add to the actual <input> tag
|
92 |
-
* (optional) 'description' => (string) description to show underneath the field
|
93 |
-
* (optional) 'expl' => (string) label for a checkbox
|
94 |
-
* (optional) 'help' => (string) help text to show on mouse over ? image
|
95 |
-
* (optional) 'rows' => (int) number of rows for a textarea, defaults to 3
|
96 |
-
*
|
97 |
* (optional) 'placeholder' => (string) Currently only used by add-on plugins.
|
98 |
* (optional) 'serialized' => (bool) whether the value is expected to be serialized,
|
99 |
-
* i.e. an array or object, defaults to false
|
100 |
* Currently only used by add-on plugins.
|
101 |
-
*
|
102 |
-
* {@internal
|
103 |
-
* - Titles, help texts, description text and option labels are added via a translate_meta_boxes() method
|
104 |
-
* in the relevant child classes (WPSEO_Metabox and WPSEO_Social_admin) as they are only needed there.
|
105 |
-
* - Beware: even though the meta keys are divided into subsets, they still have to be uniquely named!}}
|
106 |
*/
|
107 |
public static $meta_fields = array(
|
108 |
'general' => array(
|
33 |
/**
|
34 |
* Prefix for all WPSEO meta values in the database.
|
35 |
*
|
|
|
|
|
36 |
* {@internal If at any point this would change, quite apart from an upgrade routine,
|
37 |
* this also will need to be changed in the wpml-config.xml file.}}
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
*/
|
41 |
public static $meta_prefix = '_yoast_wpseo_';
|
42 |
|
68 |
/**
|
69 |
* Meta box field definitions for the meta box form.
|
70 |
*
|
71 |
+
* {@internal
|
72 |
+
* - Titles, help texts, description text and option labels are added via a translate_meta_boxes() method
|
73 |
+
* in the relevant child classes (WPSEO_Metabox and WPSEO_Social_admin) as they are only needed there.
|
74 |
+
* - Beware: even though the meta keys are divided into subsets, they still have to be uniquely named!}}
|
75 |
+
*
|
76 |
+
* @var array $meta_fields
|
77 |
+
* Array format:
|
78 |
* (required) 'type' => (string) field type. i.e. text / textarea / checkbox /
|
79 |
+
* radio / select / multiselect / upload etc.
|
80 |
+
* (required) 'title' => (string) table row title.
|
81 |
+
* (recommended) 'default_value' => (string|array) default value for the field.
|
82 |
* IMPORTANT:
|
83 |
* - if the field has options, the default has to be the
|
84 |
+
* key of one of the options.
|
85 |
* - if the field is a text field, the default **has** to be
|
86 |
* an empty string as otherwise the user can't save
|
87 |
+
* an empty value/delete the meta value.
|
88 |
* - if the field is a checkbox, the only valid values
|
89 |
+
* are 'on' or 'off'.
|
90 |
* (semi-required) 'options' => (array) options for used with (multi-)select and radio
|
91 |
+
* fields, required if that's the field type.
|
92 |
+
* key = (string) value which will be saved to db.
|
93 |
+
* value = (string) text label for the option.
|
94 |
* (optional) 'autocomplete' => (bool) whether autocomplete is on for text fields,
|
95 |
+
* defaults to true.
|
96 |
+
* (optional) 'class' => (string) classname(s) to add to the actual <input> tag.
|
97 |
+
* (optional) 'description' => (string) description to show underneath the field.
|
98 |
+
* (optional) 'expl' => (string) label for a checkbox.
|
99 |
+
* (optional) 'help' => (string) help text to show on mouse over ? image.
|
100 |
+
* (optional) 'rows' => (int) number of rows for a textarea, defaults to 3.
|
|
|
101 |
* (optional) 'placeholder' => (string) Currently only used by add-on plugins.
|
102 |
* (optional) 'serialized' => (bool) whether the value is expected to be serialized,
|
103 |
+
* i.e. an array or object, defaults to false.
|
104 |
* Currently only used by add-on plugins.
|
|
|
|
|
|
|
|
|
|
|
105 |
*/
|
106 |
public static $meta_fields = array(
|
107 |
'general' => array(
|
inc/class-wpseo-utils.php
CHANGED
@@ -57,7 +57,7 @@ class WPSEO_Utils {
|
|
57 |
*
|
58 |
* {@internal current_user_can() checks internally whether a user is on wp-ms and adjusts accordingly.}}
|
59 |
*
|
60 |
-
* @since
|
61 |
*
|
62 |
* @return bool
|
63 |
*/
|
@@ -316,7 +316,7 @@ class WPSEO_Utils {
|
|
316 |
* Sanitize a url for saving to the database.
|
317 |
* Not to be confused with the old native WP function.
|
318 |
*
|
319 |
-
* @todo
|
320 |
*
|
321 |
* @since 1.8.0
|
322 |
*
|
@@ -1179,24 +1179,41 @@ SVG;
|
|
1179 |
return wp_json_encode( $data, $flags );
|
1180 |
}
|
1181 |
|
1182 |
-
|
1183 |
/**
|
1184 |
* Output a Schema blob.
|
1185 |
*
|
1186 |
* @param array $graph The Schema graph array to output.
|
1187 |
* @param string $class The (optional) class to add to the script tag.
|
|
|
|
|
1188 |
*/
|
1189 |
public static function schema_output( $graph, $class = 'yoast-schema-graph' ) {
|
1190 |
if ( ! is_array( $graph ) || empty( $graph ) ) {
|
1191 |
-
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1192 |
}
|
1193 |
|
1194 |
$output = array(
|
1195 |
'@context' => 'https://schema.org',
|
1196 |
'@graph' => $graph,
|
1197 |
);
|
1198 |
-
|
1199 |
-
echo "<script type='application/ld+json' class='", esc_attr( $class ), "'>", self::format_json_encode( $output ), '</script>', "\n";
|
1200 |
}
|
1201 |
|
1202 |
/* ********************* DEPRECATED METHODS ********************* */
|
@@ -1204,7 +1221,7 @@ SVG;
|
|
1204 |
/**
|
1205 |
* Returns the language part of a given locale, defaults to english when the $locale is empty.
|
1206 |
*
|
1207 |
-
* @see
|
1208 |
*
|
1209 |
* @deprecated 9.5
|
1210 |
* @codeCoverageIgnore
|
@@ -1227,7 +1244,7 @@ SVG;
|
|
1227 |
* Can be removed when support for WordPress 4.6 will be dropped, in favor
|
1228 |
* of WordPress get_user_locale() that already fallbacks to the site's locale.
|
1229 |
*
|
1230 |
-
* @see
|
1231 |
*
|
1232 |
* @deprecated 9.5
|
1233 |
* @codeCoverageIgnore
|
@@ -1239,4 +1256,20 @@ SVG;
|
|
1239 |
|
1240 |
return WPSEO_Language_Utils::get_user_locale();
|
1241 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1242 |
}
|
57 |
*
|
58 |
* {@internal current_user_can() checks internally whether a user is on wp-ms and adjusts accordingly.}}
|
59 |
*
|
60 |
+
* @since 1.8.0
|
61 |
*
|
62 |
* @return bool
|
63 |
*/
|
316 |
* Sanitize a url for saving to the database.
|
317 |
* Not to be confused with the old native WP function.
|
318 |
*
|
319 |
+
* @todo [JRF => whomever] Check/improve url verification.
|
320 |
*
|
321 |
* @since 1.8.0
|
322 |
*
|
1179 |
return wp_json_encode( $data, $flags );
|
1180 |
}
|
1181 |
|
|
|
1182 |
/**
|
1183 |
* Output a Schema blob.
|
1184 |
*
|
1185 |
* @param array $graph The Schema graph array to output.
|
1186 |
* @param string $class The (optional) class to add to the script tag.
|
1187 |
+
*
|
1188 |
+
* @return bool
|
1189 |
*/
|
1190 |
public static function schema_output( $graph, $class = 'yoast-schema-graph' ) {
|
1191 |
if ( ! is_array( $graph ) || empty( $graph ) ) {
|
1192 |
+
return false;
|
1193 |
+
}
|
1194 |
+
|
1195 |
+
echo self::schema_tag( $graph, $class );
|
1196 |
+
return true;
|
1197 |
+
}
|
1198 |
+
|
1199 |
+
/**
|
1200 |
+
* Returns a script tag with Schema blob.
|
1201 |
+
*
|
1202 |
+
* @param array $graph The Schema graph array to output.
|
1203 |
+
* @param string $class The (optional) class to add to the script tag.
|
1204 |
+
*
|
1205 |
+
* @return false|string A schema blob with script tags.
|
1206 |
+
*/
|
1207 |
+
public static function schema_tag( $graph, $class = 'yoast-schema-graph' ) {
|
1208 |
+
if ( ! is_array( $graph ) || empty( $graph ) ) {
|
1209 |
+
return false;
|
1210 |
}
|
1211 |
|
1212 |
$output = array(
|
1213 |
'@context' => 'https://schema.org',
|
1214 |
'@graph' => $graph,
|
1215 |
);
|
1216 |
+
return "<script type='application/ld+json' class='" . esc_attr( $class ) . "'>" . self::format_json_encode( $output ) . '</script>' . "\n";
|
|
|
1217 |
}
|
1218 |
|
1219 |
/* ********************* DEPRECATED METHODS ********************* */
|
1221 |
/**
|
1222 |
* Returns the language part of a given locale, defaults to english when the $locale is empty.
|
1223 |
*
|
1224 |
+
* @see WPSEO_Language_Utils::get_language()
|
1225 |
*
|
1226 |
* @deprecated 9.5
|
1227 |
* @codeCoverageIgnore
|
1244 |
* Can be removed when support for WordPress 4.6 will be dropped, in favor
|
1245 |
* of WordPress get_user_locale() that already fallbacks to the site's locale.
|
1246 |
*
|
1247 |
+
* @see WPSEO_Language_Utils::get_user_locale()
|
1248 |
*
|
1249 |
* @deprecated 9.5
|
1250 |
* @codeCoverageIgnore
|
1256 |
|
1257 |
return WPSEO_Language_Utils::get_user_locale();
|
1258 |
}
|
1259 |
+
|
1260 |
+
/**
|
1261 |
+
* Gets an array of enabled features.
|
1262 |
+
*
|
1263 |
+
* @return string[] The array of enabled features.
|
1264 |
+
*/
|
1265 |
+
public static function retrieve_enabled_features() {
|
1266 |
+
$enabled_features = array();
|
1267 |
+
if ( defined( 'YOAST_SEO_ENABLED_FEATURES' ) ) {
|
1268 |
+
$enabled_features = preg_split( '/,\W*/', YOAST_SEO_ENABLED_FEATURES );
|
1269 |
+
}
|
1270 |
+
// Make the array of enabled features filterable, so features can be enabled at will.
|
1271 |
+
$enabled_features = apply_filters( 'wpseo_enable_feature', $enabled_features );
|
1272 |
+
|
1273 |
+
return $enabled_features;
|
1274 |
+
}
|
1275 |
}
|
inc/options/class-wpseo-option-wpseo.php
CHANGED
@@ -22,7 +22,7 @@ class WPSEO_Option_Wpseo extends WPSEO_Option {
|
|
22 |
*
|
23 |
* {@internal Shouldn't be requested directly, use $this->get_defaults();}}
|
24 |
*
|
25 |
-
* @var
|
26 |
*/
|
27 |
protected $defaults = array(
|
28 |
// Non-form fields, set via (ajax) function.
|
22 |
*
|
23 |
* {@internal Shouldn't be requested directly, use $this->get_defaults();}}
|
24 |
*
|
25 |
+
* @var array
|
26 |
*/
|
27 |
protected $defaults = array(
|
28 |
// Non-form fields, set via (ajax) function.
|
inc/options/class-wpseo-option.php
CHANGED
@@ -180,7 +180,7 @@ abstract class WPSEO_Option {
|
|
180 |
/*
|
181 |
* Make sure the option will always get validated, independently of register_setting()
|
182 |
* (only available on back-end).
|
183 |
-
|
184 |
add_filter( 'sanitize_option_' . $this->option_name, array( $this, 'validate' ) );
|
185 |
|
186 |
// Flushes the rewrite rules when option is updated.
|
180 |
/*
|
181 |
* Make sure the option will always get validated, independently of register_setting()
|
182 |
* (only available on back-end).
|
183 |
+
*/
|
184 |
add_filter( 'sanitize_option_' . $this->option_name, array( $this, 'validate' ) );
|
185 |
|
186 |
// Flushes the rewrite rules when option is updated.
|
inc/sitemaps/class-post-type-sitemap-provider.php
CHANGED
@@ -163,12 +163,13 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
|
|
163 |
$all_dates = array();
|
164 |
|
165 |
if ( $max_pages > 1 ) {
|
|
|
166 |
|
167 |
$sql = "
|
168 |
SELECT post_modified_gmt
|
169 |
FROM ( SELECT @rownum:=0 ) init
|
170 |
JOIN {$wpdb->posts} USE INDEX( type_status_date )
|
171 |
-
WHERE post_status IN ( '
|
172 |
AND post_type = %s
|
173 |
AND ( @rownum:=@rownum+1 ) %% %d = 0
|
174 |
ORDER BY post_modified_gmt ASC
|
@@ -543,7 +544,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
|
|
543 |
* Also see {@link http://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/}.
|
544 |
*/
|
545 |
$sql = "
|
546 |
-
SELECT l.ID, post_title, post_content, post_name, post_parent, post_author, post_modified_gmt, post_date, post_date_gmt
|
547 |
FROM (
|
548 |
SELECT {$wpdb->posts}.ID
|
549 |
FROM {$wpdb->posts}
|
@@ -561,7 +562,6 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
|
|
561 |
|
562 |
foreach ( $posts as $post ) {
|
563 |
$post->post_type = $post_type;
|
564 |
-
$post->post_status = 'publish';
|
565 |
$post->filter = 'sample';
|
566 |
$post->ID = (int) $post->ID;
|
567 |
$post->post_parent = (int) $post->post_parent;
|
@@ -584,20 +584,24 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
|
|
584 |
global $wpdb;
|
585 |
|
586 |
$join = '';
|
587 |
-
|
|
|
|
|
588 |
|
589 |
// Based on WP_Query->get_posts(). R.
|
590 |
if ( 'attachment' === $post_type ) {
|
591 |
$join = " LEFT JOIN {$wpdb->posts} AS p2 ON ({$wpdb->posts}.post_parent = p2.ID) ";
|
592 |
-
|
|
|
|
|
593 |
}
|
594 |
|
595 |
$where_clause = "
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
";
|
602 |
|
603 |
return $wpdb->prepare( $where_clause, $post_type );
|
163 |
$all_dates = array();
|
164 |
|
165 |
if ( $max_pages > 1 ) {
|
166 |
+
$post_statuses = array_map( 'esc_sql', WPSEO_Sitemaps::get_post_statuses( $post_type ) );
|
167 |
|
168 |
$sql = "
|
169 |
SELECT post_modified_gmt
|
170 |
FROM ( SELECT @rownum:=0 ) init
|
171 |
JOIN {$wpdb->posts} USE INDEX( type_status_date )
|
172 |
+
WHERE post_status IN ('" . implode( "','", $post_statuses ) . "')
|
173 |
AND post_type = %s
|
174 |
AND ( @rownum:=@rownum+1 ) %% %d = 0
|
175 |
ORDER BY post_modified_gmt ASC
|
544 |
* Also see {@link http://explainextended.com/2009/10/23/mysql-order-by-limit-performance-late-row-lookups/}.
|
545 |
*/
|
546 |
$sql = "
|
547 |
+
SELECT l.ID, post_title, post_content, post_name, post_parent, post_author, post_status, post_modified_gmt, post_date, post_date_gmt
|
548 |
FROM (
|
549 |
SELECT {$wpdb->posts}.ID
|
550 |
FROM {$wpdb->posts}
|
562 |
|
563 |
foreach ( $posts as $post ) {
|
564 |
$post->post_type = $post_type;
|
|
|
565 |
$post->filter = 'sample';
|
566 |
$post->ID = (int) $post->ID;
|
567 |
$post->post_parent = (int) $post->post_parent;
|
584 |
global $wpdb;
|
585 |
|
586 |
$join = '';
|
587 |
+
|
588 |
+
$post_statuses = array_map( 'esc_sql', WPSEO_Sitemaps::get_post_statuses( $post_type ) );
|
589 |
+
$status_where = "{$wpdb->posts}.post_status IN ('" . implode( "','", $post_statuses ) . "')";
|
590 |
|
591 |
// Based on WP_Query->get_posts(). R.
|
592 |
if ( 'attachment' === $post_type ) {
|
593 |
$join = " LEFT JOIN {$wpdb->posts} AS p2 ON ({$wpdb->posts}.post_parent = p2.ID) ";
|
594 |
+
|
595 |
+
$parent_statuses = array_diff( $post_statuses, array( 'inherit' ) );
|
596 |
+
$status_where = "p2.post_status IN ('" . implode( "','", $parent_statuses ) . "') AND p2.post_password = ''";
|
597 |
}
|
598 |
|
599 |
$where_clause = "
|
600 |
+
{$join}
|
601 |
+
WHERE {$status_where}
|
602 |
+
AND {$wpdb->posts}.post_type = %s
|
603 |
+
AND {$wpdb->posts}.post_password = ''
|
604 |
+
AND {$wpdb->posts}.post_date != '0000-00-00 00:00:00'
|
605 |
";
|
606 |
|
607 |
return $wpdb->prepare( $where_clause, $post_type );
|
inc/sitemaps/class-sitemaps-renderer.php
CHANGED
@@ -154,23 +154,7 @@ class WPSEO_Sitemaps_Renderer {
|
|
154 |
|
155 |
$output .= $sitemap;
|
156 |
$output .= "\n<!-- XML Sitemap generated by Yoast SEO -->";
|
157 |
-
|
158 |
-
$debug = WP_DEBUG || ( defined( 'WPSEO_DEBUG' ) && true === WPSEO_DEBUG );
|
159 |
-
|
160 |
-
if ( ! WP_DEBUG_DISPLAY || ! $debug ) {
|
161 |
-
return $output;
|
162 |
-
}
|
163 |
-
|
164 |
-
$memory_used = number_format( ( memory_get_peak_usage() / 1048576 ), 2 );
|
165 |
-
$queries_run = ( $transient ) ? 'Served from transient cache' : 'Queries executed ' . absint( $GLOBALS['wpdb']->num_queries );
|
166 |
-
|
167 |
-
$output .= "\n<!-- {$memory_used}MB | {$queries_run} -->";
|
168 |
-
|
169 |
-
if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) {
|
170 |
-
|
171 |
-
$queries = print_r( $GLOBALS['wpdb']->queries, true );
|
172 |
-
$output .= "\n<!-- {$queries} -->";
|
173 |
-
}
|
174 |
|
175 |
return $output;
|
176 |
}
|
@@ -369,4 +353,30 @@ class WPSEO_Sitemaps_Renderer {
|
|
369 |
|
370 |
return plugin_dir_url( WPSEO_FILE ) . 'css/main-sitemap.xsl';
|
371 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
}
|
154 |
|
155 |
$output .= $sitemap;
|
156 |
$output .= "\n<!-- XML Sitemap generated by Yoast SEO -->";
|
157 |
+
$output .= $this->get_debug( $transient );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
return $output;
|
160 |
}
|
353 |
|
354 |
return plugin_dir_url( WPSEO_FILE ) . 'css/main-sitemap.xsl';
|
355 |
}
|
356 |
+
|
357 |
+
/**
|
358 |
+
* Adds debugging information to the output.
|
359 |
+
*
|
360 |
+
* @param bool $transient Transient cache was used or not.
|
361 |
+
*
|
362 |
+
* @return string Information about the functionality used to build the sitemap.
|
363 |
+
*/
|
364 |
+
protected function get_debug( $transient ) {
|
365 |
+
$debug = defined( 'YOAST_SEO_DEBUG_SITEMAPS' ) && YOAST_SEO_DEBUG_SITEMAPS === true;
|
366 |
+
if ( ! $debug ) {
|
367 |
+
return '';
|
368 |
+
}
|
369 |
+
|
370 |
+
$memory_used = number_format( ( memory_get_peak_usage() / 1048576 ), 2 );
|
371 |
+
$queries_run = ( $transient ) ? 'Served from transient cache' : 'Queries executed ' . absint( $GLOBALS['wpdb']->num_queries );
|
372 |
+
|
373 |
+
$output = "\n<!-- {$memory_used}MB | {$queries_run} -->";
|
374 |
+
|
375 |
+
if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) {
|
376 |
+
$queries = print_r( $GLOBALS['wpdb']->queries, true );
|
377 |
+
$output .= "\n<!-- {$queries} -->";
|
378 |
+
}
|
379 |
+
|
380 |
+
return $output;
|
381 |
+
}
|
382 |
}
|
inc/sitemaps/class-sitemaps-router.php
CHANGED
@@ -29,11 +29,11 @@ class WPSEO_Sitemaps_Router {
|
|
29 |
|
30 |
$wp->add_query_var( 'sitemap' );
|
31 |
$wp->add_query_var( 'sitemap_n' );
|
32 |
-
$wp->add_query_var( 'xsl' );
|
33 |
|
34 |
add_rewrite_rule( 'sitemap_index\.xml$', 'index.php?sitemap=1', 'top' );
|
35 |
add_rewrite_rule( '([^/]+?)-sitemap([0-9]+)?\.xml$', 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]', 'top' );
|
36 |
-
add_rewrite_rule( '([a-z]+)?-?sitemap\.xsl$', 'index.php?xsl=$matches[1]', 'top' );
|
37 |
}
|
38 |
|
39 |
/**
|
@@ -45,7 +45,7 @@ class WPSEO_Sitemaps_Router {
|
|
45 |
*/
|
46 |
public function redirect_canonical( $redirect ) {
|
47 |
|
48 |
-
if ( get_query_var( 'sitemap' ) || get_query_var( 'xsl' ) ) {
|
49 |
return false;
|
50 |
}
|
51 |
|
29 |
|
30 |
$wp->add_query_var( 'sitemap' );
|
31 |
$wp->add_query_var( 'sitemap_n' );
|
32 |
+
$wp->add_query_var( 'yoast-sitemap-xsl' );
|
33 |
|
34 |
add_rewrite_rule( 'sitemap_index\.xml$', 'index.php?sitemap=1', 'top' );
|
35 |
add_rewrite_rule( '([^/]+?)-sitemap([0-9]+)?\.xml$', 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]', 'top' );
|
36 |
+
add_rewrite_rule( '([a-z]+)?-?sitemap\.xsl$', 'index.php?yoast-sitemap-xsl=$matches[1]', 'top' );
|
37 |
}
|
38 |
|
39 |
/**
|
45 |
*/
|
46 |
public function redirect_canonical( $redirect ) {
|
47 |
|
48 |
+
if ( get_query_var( 'sitemap' ) || get_query_var( 'yoast-sitemap-xsl' ) ) {
|
49 |
return false;
|
50 |
}
|
51 |
|
inc/sitemaps/class-sitemaps.php
CHANGED
@@ -175,7 +175,7 @@ class WPSEO_Sitemaps {
|
|
175 |
public function register_xsl( $name, $function, $rewrite = '' ) {
|
176 |
add_action( 'wpseo_xsl_' . $name, $function );
|
177 |
if ( ! empty( $rewrite ) ) {
|
178 |
-
add_rewrite_rule( $rewrite, 'index.php?xsl=' . $name, 'top' );
|
179 |
}
|
180 |
}
|
181 |
|
@@ -230,9 +230,9 @@ class WPSEO_Sitemaps {
|
|
230 |
return;
|
231 |
}
|
232 |
|
233 |
-
$
|
234 |
|
235 |
-
if ( ! empty( $
|
236 |
/*
|
237 |
* This is a method to provide the XSL via the home_url.
|
238 |
* Needed when the site_url and home_url are not the same.
|
@@ -240,7 +240,7 @@ class WPSEO_Sitemaps {
|
|
240 |
*
|
241 |
* Whenever home_url and site_url are the same, the file can be loaded directly.
|
242 |
*/
|
243 |
-
$this->xsl_output( $
|
244 |
$this->sitemap_close();
|
245 |
|
246 |
return;
|
@@ -495,14 +495,16 @@ class WPSEO_Sitemaps {
|
|
495 |
$post_type_names = get_post_types( array( 'public' => true ) );
|
496 |
|
497 |
if ( ! empty( $post_type_names ) ) {
|
|
|
|
|
498 |
$sql = "
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
|
507 |
foreach ( $wpdb->get_results( $sql ) as $obj ) {
|
508 |
$post_type_dates[ $obj->post_type ] = $obj->date;
|
@@ -582,4 +584,35 @@ class WPSEO_Sitemaps {
|
|
582 |
|
583 |
return $entries;
|
584 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|