Version Description
Google Search has a new bug in their parser, which causes pages to be deindexed unintentionally when a specific combination of robots-settings are used. To work around this bug, we changed how the recently introduced copyright directive settings work.
For more information, see our KB entry on why the Maximum Image Preview Size setting may now be ignored.
We also fixed three bugs and added minor improvements.
Download this release
Release Info
Developer | Cybr |
Plugin | The SEO Framework |
Version | 4.0.3 |
Comparing to | |
See all releases |
Code changes from version 4.0.2 to 4.0.3
- autodescription.php +2 -2
- bootstrap/envtest.php +3 -3
- bootstrap/upgrade.php +2 -2
- inc/classes/admin-init.class.php +1 -1
- inc/classes/admin-pages.class.php +7 -2
- inc/classes/bridges/ping.class.php +4 -2
- inc/classes/builders/sitemap-base.class.php +1 -1
- inc/classes/core.class.php +16 -4
- inc/classes/deprecated.class.php +0 -5
- inc/classes/detect.class.php +6 -1
- inc/classes/generate-url.class.php +7 -1
- inc/classes/generate.class.php +43 -20
- inc/classes/init.class.php +1 -1
- inc/classes/sanitize.class.php +1 -1
- inc/compat/plugin-woocommerce.php +9 -0
- inc/functions/upgrade-suggestion.php +1 -1
- inc/views/admin/metaboxes/robots-metabox.php +15 -3
- language/autodescription.pot +42 -27
- lib/css/settings.css +2 -1
- lib/css/settings.min.css +1 -1
- lib/css/tsf.css +17 -7
- lib/css/tsf.min.css +1 -1
- lib/js/media.js +4 -2
- lib/js/settings.js +2 -1
- lib/js/settings.min.js +1 -1
- readme.txt +14 -6
autodescription.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: The SEO Framework
|
4 |
* Plugin URI: https://theseoframework.com/
|
5 |
* Description: An automated, advanced, accessible, unbranded and extremely fast SEO solution for your WordPress website.
|
6 |
-
* Version: 4.0.
|
7 |
* Author: The SEO Framework Team
|
8 |
* Author URI: https://theseoframework.com/
|
9 |
* License: GPLv3
|
@@ -64,7 +64,7 @@ defined( 'ABSPATH' ) or die;
|
|
64 |
*
|
65 |
* @since 2.3.5
|
66 |
*/
|
67 |
-
define( 'THE_SEO_FRAMEWORK_VERSION', '4.0.
|
68 |
|
69 |
/**
|
70 |
* The plugin Database version.
|
3 |
* Plugin Name: The SEO Framework
|
4 |
* Plugin URI: https://theseoframework.com/
|
5 |
* Description: An automated, advanced, accessible, unbranded and extremely fast SEO solution for your WordPress website.
|
6 |
+
* Version: 4.0.3
|
7 |
* Author: The SEO Framework Team
|
8 |
* Author URI: https://theseoframework.com/
|
9 |
* License: GPLv3
|
64 |
*
|
65 |
* @since 2.3.5
|
66 |
*/
|
67 |
+
define( 'THE_SEO_FRAMEWORK_VERSION', '4.0.3' );
|
68 |
|
69 |
/**
|
70 |
* The plugin Database version.
|
bootstrap/envtest.php
CHANGED
@@ -70,13 +70,13 @@ function the_seo_framework_pre_boot_test() {
|
|
70 |
}
|
71 |
|
72 |
$requirements = array(
|
73 |
-
'php' =>
|
74 |
-
'wp' => '
|
75 |
);
|
76 |
|
77 |
// phpcs:disable, Generic.Formatting.MultipleStatementAlignment, WordPress.WhiteSpace.PrecisionAlignment
|
78 |
! defined( 'PHP_VERSION_ID' ) || PHP_VERSION_ID < $requirements['php'] and $test = 1
|
79 |
-
or $GLOBALS['
|
80 |
or $test = true;
|
81 |
// phpcs:enable, Generic.Formatting.MultipleStatementAlignment, WordPress.WhiteSpace.PrecisionAlignment
|
82 |
|
70 |
}
|
71 |
|
72 |
$requirements = array(
|
73 |
+
'php' => 50600,
|
74 |
+
'wp' => '4.9-dev',
|
75 |
);
|
76 |
|
77 |
// phpcs:disable, Generic.Formatting.MultipleStatementAlignment, WordPress.WhiteSpace.PrecisionAlignment
|
78 |
! defined( 'PHP_VERSION_ID' ) || PHP_VERSION_ID < $requirements['php'] and $test = 1
|
79 |
+
or version_compare( $GLOBALS['wp_version'], $requirements['wp'], '<' ) and $test = 2
|
80 |
or $test = true;
|
81 |
// phpcs:enable, Generic.Formatting.MultipleStatementAlignment, WordPress.WhiteSpace.PrecisionAlignment
|
82 |
|
bootstrap/upgrade.php
CHANGED
@@ -273,7 +273,7 @@ function _do_upgrade_notice() {
|
|
273 |
[ 'a' ],
|
274 |
[ 'a_internal' => false ]
|
275 |
),
|
276 |
-
'
|
277 |
false,
|
278 |
false
|
279 |
);
|
@@ -344,7 +344,7 @@ function _output_upgrade_notices() {
|
|
344 |
|
345 |
foreach ( $notices as $notice ) {
|
346 |
//* @TODO rtl?
|
347 |
-
\the_seo_framework()->do_dismissible_notice( 'SEO: ' . $notice, '
|
348 |
}
|
349 |
}
|
350 |
|
273 |
[ 'a' ],
|
274 |
[ 'a_internal' => false ]
|
275 |
),
|
276 |
+
'info',
|
277 |
false,
|
278 |
false
|
279 |
);
|
344 |
|
345 |
foreach ( $notices as $notice ) {
|
346 |
//* @TODO rtl?
|
347 |
+
\the_seo_framework()->do_dismissible_notice( 'SEO: ' . $notice, 'info' );
|
348 |
}
|
349 |
}
|
350 |
|
inc/classes/admin-init.class.php
CHANGED
@@ -59,7 +59,7 @@ class Admin_Init extends Init {
|
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
-
* Adds post states
|
63 |
*
|
64 |
* @since 4.0.0
|
65 |
*
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
+
* Adds post states for the post/page edit.php query.
|
63 |
*
|
64 |
* @since 4.0.0
|
65 |
*
|
inc/classes/admin-pages.class.php
CHANGED
@@ -202,7 +202,7 @@ class Admin_Pages extends Profile {
|
|
202 |
|
203 |
case 'unchanged':
|
204 |
$message = \__( 'No SEO settings were changed, but the caches have been flushed.', 'autodescription' );
|
205 |
-
$type = '
|
206 |
break;
|
207 |
|
208 |
case 'reset':
|
@@ -353,6 +353,8 @@ class Admin_Pages extends Profile {
|
|
353 |
* @since 2.6.0
|
354 |
* @since 3.0.6 The messages are no longer auto-styled to "strong".
|
355 |
* @since 4.0.0 Added a tabindex, so keyboard navigation is possible on the "empty" dashicon.
|
|
|
|
|
356 |
*
|
357 |
* @param string $message The notice message. Expected to be escaped if $escape is false.
|
358 |
* @param string $type The notice type : 'updated', 'error', 'warning'. Expected to be escaped.
|
@@ -372,6 +374,9 @@ class Admin_Pages extends Profile {
|
|
372 |
if ( 'warning' === $type )
|
373 |
$type = 'notice-warning';
|
374 |
|
|
|
|
|
|
|
375 |
$a11y = $a11y ? 'tsf-show-icon' : '';
|
376 |
|
377 |
return vsprintf(
|
@@ -381,7 +386,7 @@ class Admin_Pages extends Profile {
|
|
381 |
( $a11y ? 'tsf-show-icon' : '' ),
|
382 |
( $escape ? \esc_html( $message ) : $message ),
|
383 |
sprintf(
|
384 |
-
'<a class="hide-if-no-tsf-js tsf-dismiss" title="%s"
|
385 |
\esc_attr__( 'Dismiss this notice', 'autodescription' )
|
386 |
),
|
387 |
]
|
202 |
|
203 |
case 'unchanged':
|
204 |
$message = \__( 'No SEO settings were changed, but the caches have been flushed.', 'autodescription' );
|
205 |
+
$type = 'info';
|
206 |
break;
|
207 |
|
208 |
case 'reset':
|
353 |
* @since 2.6.0
|
354 |
* @since 3.0.6 The messages are no longer auto-styled to "strong".
|
355 |
* @since 4.0.0 Added a tabindex, so keyboard navigation is possible on the "empty" dashicon.
|
356 |
+
* @since 4.0.3 1. Keyboard navigation is now supported on the dismiss icon.
|
357 |
+
* 2. The info notice type is now supported.
|
358 |
*
|
359 |
* @param string $message The notice message. Expected to be escaped if $escape is false.
|
360 |
* @param string $type The notice type : 'updated', 'error', 'warning'. Expected to be escaped.
|
374 |
if ( 'warning' === $type )
|
375 |
$type = 'notice-warning';
|
376 |
|
377 |
+
if ( 'info' === $type )
|
378 |
+
$type = 'notice-info';
|
379 |
+
|
380 |
$a11y = $a11y ? 'tsf-show-icon' : '';
|
381 |
|
382 |
return vsprintf(
|
386 |
( $a11y ? 'tsf-show-icon' : '' ),
|
387 |
( $escape ? \esc_html( $message ) : $message ),
|
388 |
sprintf(
|
389 |
+
'<a class="hide-if-no-tsf-js tsf-dismiss" href="javascript:;" title="%s"></a>',
|
390 |
\esc_attr__( 'Dismiss this notice', 'autodescription' )
|
391 |
),
|
392 |
]
|
inc/classes/bridges/ping.class.php
CHANGED
@@ -103,10 +103,11 @@ final class Ping {
|
|
103 |
* @since 2.2.9
|
104 |
* @since 3.1.0 Updated ping URL. Old one still worked, too.
|
105 |
* @since 4.0.0 Moved to \The_SEO_Framework\Bridges\Ping
|
|
|
106 |
* @link https://support.google.com/webmasters/answer/6065812?hl=en
|
107 |
*/
|
108 |
public static function ping_google() {
|
109 |
-
$pingurl = '
|
110 |
\The_SEO_Framework\Bridges\Sitemap::get_instance()->get_expected_sitemap_endpoint_url()
|
111 |
);
|
112 |
\wp_safe_remote_get( $pingurl, [ 'timeout' => 3 ] );
|
@@ -118,10 +119,11 @@ final class Ping {
|
|
118 |
* @since 2.2.9
|
119 |
* @since 3.2.3 Updated ping URL. Old one still worked, too.
|
120 |
* @since 4.0.0 Moved to \The_SEO_Framework\Bridges\Ping
|
|
|
121 |
* @link https://www.bing.com/webmaster/help/how-to-submit-sitemaps-82a15bd4
|
122 |
*/
|
123 |
public static function ping_bing() {
|
124 |
-
$pingurl = '
|
125 |
\The_SEO_Framework\Bridges\Sitemap::get_instance()->get_expected_sitemap_endpoint_url()
|
126 |
);
|
127 |
\wp_safe_remote_get( $pingurl, [ 'timeout' => 3 ] );
|
103 |
* @since 2.2.9
|
104 |
* @since 3.1.0 Updated ping URL. Old one still worked, too.
|
105 |
* @since 4.0.0 Moved to \The_SEO_Framework\Bridges\Ping
|
106 |
+
* @since 4.0.3 Google now redirects to HTTPS. Updated URL scheme to accomodate.
|
107 |
* @link https://support.google.com/webmasters/answer/6065812?hl=en
|
108 |
*/
|
109 |
public static function ping_google() {
|
110 |
+
$pingurl = 'https://www.google.com/ping?sitemap=' . rawurlencode(
|
111 |
\The_SEO_Framework\Bridges\Sitemap::get_instance()->get_expected_sitemap_endpoint_url()
|
112 |
);
|
113 |
\wp_safe_remote_get( $pingurl, [ 'timeout' => 3 ] );
|
119 |
* @since 2.2.9
|
120 |
* @since 3.2.3 Updated ping URL. Old one still worked, too.
|
121 |
* @since 4.0.0 Moved to \The_SEO_Framework\Bridges\Ping
|
122 |
+
* @since 4.0.3 Bing now redirects to HTTPS. Updated URL scheme to accomodate.
|
123 |
* @link https://www.bing.com/webmaster/help/how-to-submit-sitemaps-82a15bd4
|
124 |
*/
|
125 |
public static function ping_bing() {
|
126 |
+
$pingurl = 'https://www.bing.com/ping?sitemap=' . rawurlencode(
|
127 |
\The_SEO_Framework\Bridges\Sitemap::get_instance()->get_expected_sitemap_endpoint_url()
|
128 |
);
|
129 |
\wp_safe_remote_get( $pingurl, [ 'timeout' => 3 ] );
|
inc/classes/builders/sitemap-base.class.php
CHANGED
@@ -334,7 +334,7 @@ class Sitemap_Base extends Sitemap {
|
|
334 |
}
|
335 |
|
336 |
/**
|
337 |
-
* Generates
|
338 |
*
|
339 |
* @since 4.0.0
|
340 |
* @generator
|
334 |
}
|
335 |
|
336 |
/**
|
337 |
+
* Generates sitemap URL item values.
|
338 |
*
|
339 |
* @since 4.0.0
|
340 |
* @generator
|
inc/classes/core.class.php
CHANGED
@@ -771,10 +771,11 @@ class Core {
|
|
771 |
* Note: This code has been rightfully stolen from the Extension Manager plugin (sorry Sybre!).
|
772 |
*
|
773 |
* @since 2.8.0
|
774 |
-
* @since 2.9.0
|
775 |
-
*
|
776 |
-
*
|
777 |
-
* @since 2.9.3
|
|
|
778 |
* @link https://wordpress.org/plugins/about/readme.txt
|
779 |
*
|
780 |
* @param string $text The text that might contain markdown. Expected to be escaped.
|
@@ -816,6 +817,17 @@ class Core {
|
|
816 |
|
817 |
$md_types = empty( $convert ) ? $conversions : array_intersect( $conversions, $convert );
|
818 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
819 |
foreach ( $md_types as $type ) :
|
820 |
switch ( $type ) :
|
821 |
case 'strong':
|
771 |
* Note: This code has been rightfully stolen from the Extension Manager plugin (sorry Sybre!).
|
772 |
*
|
773 |
* @since 2.8.0
|
774 |
+
* @since 2.9.0 1. Removed word boundary requirement for strong.
|
775 |
+
* 2. Now accepts regex count their numeric values in string.
|
776 |
+
* 3. Fixed header 1~6 calculation.
|
777 |
+
* @since 2.9.3 Added $args parameter.
|
778 |
+
* @since 4.0.3 Added a workaround for connected em/strong elements.
|
779 |
* @link https://wordpress.org/plugins/about/readme.txt
|
780 |
*
|
781 |
* @param string $text The text that might contain markdown. Expected to be escaped.
|
817 |
|
818 |
$md_types = empty( $convert ) ? $conversions : array_intersect( $conversions, $convert );
|
819 |
|
820 |
+
if ( 2 === count( array_intersect( $md_types, [ 'em', 'strong' ] ) ) ) :
|
821 |
+
$count = preg_match_all( '/(?:\*{3})([^\*{\3}]+)(?:\*{3})/', $text, $matches, PREG_PATTERN_ORDER );
|
822 |
+
for ( $i = 0; $i < $count; $i++ ) {
|
823 |
+
$text = str_replace(
|
824 |
+
$matches[0][ $i ],
|
825 |
+
sprintf( '<strong><em>%s</em></strong>', \esc_html( $matches[1][ $i ] ) ),
|
826 |
+
$text
|
827 |
+
);
|
828 |
+
}
|
829 |
+
endif;
|
830 |
+
|
831 |
foreach ( $md_types as $type ) :
|
832 |
switch ( $type ) :
|
833 |
case 'strong':
|
inc/classes/deprecated.class.php
CHANGED
@@ -37,11 +37,6 @@ defined( 'THE_SEO_FRAMEWORK_PRESENT' ) or die;
|
|
37 |
*/
|
38 |
final class Deprecated {
|
39 |
|
40 |
-
/**
|
41 |
-
* Constructor. Does nothing.
|
42 |
-
*/
|
43 |
-
public function __construct() { }
|
44 |
-
|
45 |
/**
|
46 |
* Returns a filterable sequential array of default scripts.
|
47 |
*
|
37 |
*/
|
38 |
final class Deprecated {
|
39 |
|
|
|
|
|
|
|
|
|
|
|
40 |
/**
|
41 |
* Returns a filterable sequential array of default scripts.
|
42 |
*
|
inc/classes/detect.class.php
CHANGED
@@ -680,6 +680,7 @@ class Detect extends Render {
|
|
680 |
* Detect if the current screen type is a page or taxonomy.
|
681 |
*
|
682 |
* @since 2.3.1
|
|
|
683 |
* @staticvar array $is_page
|
684 |
*
|
685 |
* @param string $type the Screen type
|
@@ -708,6 +709,7 @@ class Detect extends Render {
|
|
708 |
*
|
709 |
* @since 4.0.0
|
710 |
* @since 4.0.2 Now tests for an existing post/term ID when on singular/term pages.
|
|
|
711 |
*
|
712 |
* @return bool
|
713 |
*/
|
@@ -731,7 +733,10 @@ class Detect extends Render {
|
|
731 |
break;
|
732 |
|
733 |
case $this->is_term_meta_capable():
|
734 |
-
|
|
|
|
|
|
|
735 |
break;
|
736 |
|
737 |
default:
|
680 |
* Detect if the current screen type is a page or taxonomy.
|
681 |
*
|
682 |
* @since 2.3.1
|
683 |
+
* @TODO unused... deprecate me.
|
684 |
* @staticvar array $is_page
|
685 |
*
|
686 |
* @param string $type the Screen type
|
709 |
*
|
710 |
* @since 4.0.0
|
711 |
* @since 4.0.2 Now tests for an existing post/term ID when on singular/term pages.
|
712 |
+
* @since 4.0.3 Can now assert empty categories again by checking for taxonomy support.
|
713 |
*
|
714 |
* @return bool
|
715 |
*/
|
733 |
break;
|
734 |
|
735 |
case $this->is_term_meta_capable():
|
736 |
+
// When a term has no posts attached, it'll not return a post type, and it returns a 404 late in the loop.
|
737 |
+
// This is because get_post_type() tries to assert the first post in the loop here.
|
738 |
+
// Thus, we test for is_taxonomy_supported() instead.
|
739 |
+
$supported = $this->is_taxonomy_supported() && $this->get_the_real_ID();
|
740 |
break;
|
741 |
|
742 |
default:
|
inc/classes/generate-url.class.php
CHANGED
@@ -779,14 +779,20 @@ class Generate_Url extends Generate_Title {
|
|
779 |
* Adjusts category post link.
|
780 |
*
|
781 |
* @since 3.0.0
|
|
|
782 |
* @access private
|
783 |
*
|
784 |
* @param \WP_Term $term The category to use in the permalink.
|
785 |
-
* @param array $terms Array of all categories (WP_Term objects) associated with the post.
|
786 |
* @param \WP_Post $post The post in question.
|
787 |
* @return \WP_Term The primary term.
|
788 |
*/
|
789 |
public function _adjust_post_link_category( $term, $terms = null, $post = null ) {
|
|
|
|
|
|
|
|
|
|
|
790 |
return $this->get_primary_term( $post->ID, $term->taxonomy ) ?: $term;
|
791 |
}
|
792 |
|
779 |
* Adjusts category post link.
|
780 |
*
|
781 |
* @since 3.0.0
|
782 |
+
* @since 4.0.3 Now fills in a fallback $post object when null.
|
783 |
* @access private
|
784 |
*
|
785 |
* @param \WP_Term $term The category to use in the permalink.
|
786 |
+
* @param array $terms Array of all categories (WP_Term objects) associated with the post. Unused.
|
787 |
* @param \WP_Post $post The post in question.
|
788 |
* @return \WP_Term The primary term.
|
789 |
*/
|
790 |
public function _adjust_post_link_category( $term, $terms = null, $post = null ) {
|
791 |
+
|
792 |
+
if ( null === $post ) {
|
793 |
+
$post = \get_post( $this->get_the_real_ID() );
|
794 |
+
}
|
795 |
+
|
796 |
return $this->get_primary_term( $post->ID, $term->taxonomy ) ?: $term;
|
797 |
}
|
798 |
|
inc/classes/generate.class.php
CHANGED
@@ -78,6 +78,8 @@ class Generate extends User_Data {
|
|
78 |
* 3. Added two parameters.
|
79 |
* @since 4.0.2 1. Added new copyright directive tags.
|
80 |
* 2. Now strictly parses the validity of robots directives via a boolean check.
|
|
|
|
|
81 |
* @global \WP_Query $wp_query
|
82 |
*
|
83 |
* @param array|null $args The query arguments. Accepts 'id' and 'taxonomy'.
|
@@ -101,12 +103,12 @@ class Generate extends User_Data {
|
|
101 |
}
|
102 |
|
103 |
$meta = [
|
104 |
-
'noindex'
|
105 |
-
'nofollow'
|
106 |
-
'noarchive'
|
107 |
-
'
|
108 |
-
'max_image_preview'
|
109 |
-
'max_video_preview'
|
110 |
];
|
111 |
|
112 |
foreach (
|
@@ -115,15 +117,34 @@ class Generate extends User_Data {
|
|
115 |
) $v and $meta[ $k ] = $k;
|
116 |
|
117 |
foreach (
|
118 |
-
array_intersect_key( $_meta, array_flip( [ '
|
119 |
as $k => $v
|
120 |
-
) false !== $v and $meta[ $k ] = str_replace( '_', '-', $k ) . "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
|
122 |
/**
|
123 |
* Filters the front-end robots array, and strips empty indexes thereafter.
|
124 |
*
|
125 |
* @since 2.6.0
|
126 |
* @since 4.0.0 Added two parameters ($args and $ignore).
|
|
|
|
|
127 |
*
|
128 |
* @param array $meta The current robots meta.
|
129 |
* @param array|null $args The query arguments. Contains 'id' and 'taxonomy'.
|
@@ -152,6 +173,7 @@ class Generate extends User_Data {
|
|
152 |
*
|
153 |
* @since 4.0.0
|
154 |
* @since 4.0.2 Added new copyright directive tags.
|
|
|
155 |
* @global \WP_Query $wp_query
|
156 |
*
|
157 |
* @param int <bit> $ignore The ignore level. {
|
@@ -164,7 +186,7 @@ class Generate extends User_Data {
|
|
164 |
* bool 'noindex'
|
165 |
* bool 'nofollow'
|
166 |
* bool 'noarchive'
|
167 |
-
* false|int <R>=-1> '
|
168 |
* false|string 'max_image_preview'
|
169 |
* fasle|int <R>=-1> 'max_video_preview'
|
170 |
* }
|
@@ -175,12 +197,12 @@ class Generate extends User_Data {
|
|
175 |
$nofollow = (bool) $this->get_option( 'site_nofollow' );
|
176 |
$noarchive = (bool) $this->get_option( 'site_noarchive' );
|
177 |
|
178 |
-
$
|
179 |
|
180 |
if ( $this->get_option( 'set_copyright_directives' ) ) {
|
181 |
-
$
|
182 |
-
$max_image_preview
|
183 |
-
$max_video_preview
|
184 |
}
|
185 |
|
186 |
//* Check homepage SEO settings, set noindex, nofollow and noarchive
|
@@ -305,7 +327,7 @@ class Generate extends User_Data {
|
|
305 |
}
|
306 |
}
|
307 |
|
308 |
-
return compact( 'noindex', 'nofollow', 'noarchive', '
|
309 |
}
|
310 |
|
311 |
/**
|
@@ -315,6 +337,7 @@ class Generate extends User_Data {
|
|
315 |
*
|
316 |
* @since 4.0.0
|
317 |
* @since 4.0.2 Added new copyright directive tags.
|
|
|
318 |
*
|
319 |
* @param array|null $args The query arguments. Accepts 'id' and 'taxonomy'.
|
320 |
* @param int <bit> $ignore The ignore level. {
|
@@ -327,7 +350,7 @@ class Generate extends User_Data {
|
|
327 |
* bool 'noindex'
|
328 |
* bool 'nofollow'
|
329 |
* bool 'noarchive'
|
330 |
-
* false|int <R>=-1> '
|
331 |
* false|string 'max_image_preview'
|
332 |
* fasle|int <R>=-1> 'max_video_preview'
|
333 |
* }
|
@@ -338,12 +361,12 @@ class Generate extends User_Data {
|
|
338 |
$nofollow = (bool) $this->get_option( 'site_nofollow' );
|
339 |
$noarchive = (bool) $this->get_option( 'site_noarchive' );
|
340 |
|
341 |
-
$
|
342 |
|
343 |
if ( $this->get_option( 'set_copyright_directives' ) ) {
|
344 |
-
$
|
345 |
-
$max_image_preview
|
346 |
-
$max_video_preview
|
347 |
}
|
348 |
|
349 |
if ( $args['taxonomy'] ) {
|
@@ -422,7 +445,7 @@ class Generate extends User_Data {
|
|
422 |
endif;
|
423 |
}
|
424 |
|
425 |
-
return compact( 'noindex', 'nofollow', 'noarchive', '
|
426 |
}
|
427 |
|
428 |
/**
|
78 |
* 3. Added two parameters.
|
79 |
* @since 4.0.2 1. Added new copyright directive tags.
|
80 |
* 2. Now strictly parses the validity of robots directives via a boolean check.
|
81 |
+
* @since 4.0.3 1. Changed `max_snippet_length` to `max_snippet`
|
82 |
+
* 2. Changed the copyright directive's spacer from `=` to `:`.
|
83 |
* @global \WP_Query $wp_query
|
84 |
*
|
85 |
* @param array|null $args The query arguments. Accepts 'id' and 'taxonomy'.
|
103 |
}
|
104 |
|
105 |
$meta = [
|
106 |
+
'noindex' => '',
|
107 |
+
'nofollow' => '',
|
108 |
+
'noarchive' => '',
|
109 |
+
'max_snippet' => '',
|
110 |
+
'max_image_preview' => '',
|
111 |
+
'max_video_preview' => '',
|
112 |
];
|
113 |
|
114 |
foreach (
|
117 |
) $v and $meta[ $k ] = $k;
|
118 |
|
119 |
foreach (
|
120 |
+
array_intersect_key( $_meta, array_flip( [ 'max_snippet', 'max_image_preview', 'max_video_preview' ] ) )
|
121 |
as $k => $v
|
122 |
+
) false !== $v and $meta[ $k ] = str_replace( '_', '-', $k ) . ":$v";
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Drop-in Google Search bug patch.
|
126 |
+
* "When you combine "max-image-preview:none" with either "nofollow" or "noarchive", the page is marked as "noindex"!"
|
127 |
+
*
|
128 |
+
* (It's probably defined as `<meta name=robots content=none/>` due to a regex bug at Google)
|
129 |
+
*
|
130 |
+
* @link <https://twitter.com/SybreWaaijer/status/1192017921553375232>
|
131 |
+
* @link <https://kb.theseoframework.com/?p=82>
|
132 |
+
* @since 4.0.3
|
133 |
+
* @ignore Do not fix me. Do not place after the filter either; that's redundant, because there are more filters trickling down.
|
134 |
+
* @TEMP
|
135 |
+
*/
|
136 |
+
if ( 'max-image-preview:none' === $meta['max_image_preview'] ) {
|
137 |
+
if ( $meta['nofollow'] || $meta['noarchive'] )
|
138 |
+
$meta['max_image_preview'] = '';
|
139 |
+
}
|
140 |
|
141 |
/**
|
142 |
* Filters the front-end robots array, and strips empty indexes thereafter.
|
143 |
*
|
144 |
* @since 2.6.0
|
145 |
* @since 4.0.0 Added two parameters ($args and $ignore).
|
146 |
+
* @since 4.0.2 Now contains the copyright diretive values.
|
147 |
+
* @since 4.0.3 Changed `$meta` key `max_snippet_length` to `max_snippet`
|
148 |
*
|
149 |
* @param array $meta The current robots meta.
|
150 |
* @param array|null $args The query arguments. Contains 'id' and 'taxonomy'.
|
173 |
*
|
174 |
* @since 4.0.0
|
175 |
* @since 4.0.2 Added new copyright directive tags.
|
176 |
+
* @since 4.0.3 Changed `max_snippet_length` to `max_snippet`
|
177 |
* @global \WP_Query $wp_query
|
178 |
*
|
179 |
* @param int <bit> $ignore The ignore level. {
|
186 |
* bool 'noindex'
|
187 |
* bool 'nofollow'
|
188 |
* bool 'noarchive'
|
189 |
+
* false|int <R>=-1> 'max_snippet'
|
190 |
* false|string 'max_image_preview'
|
191 |
* fasle|int <R>=-1> 'max_video_preview'
|
192 |
* }
|
197 |
$nofollow = (bool) $this->get_option( 'site_nofollow' );
|
198 |
$noarchive = (bool) $this->get_option( 'site_noarchive' );
|
199 |
|
200 |
+
$max_snippet = $max_image_preview = $max_video_preview = false;
|
201 |
|
202 |
if ( $this->get_option( 'set_copyright_directives' ) ) {
|
203 |
+
$max_snippet = $this->get_option( 'max_snippet_length' );
|
204 |
+
$max_image_preview = $this->get_option( 'max_image_preview' );
|
205 |
+
$max_video_preview = $this->get_option( 'max_video_preview' );
|
206 |
}
|
207 |
|
208 |
//* Check homepage SEO settings, set noindex, nofollow and noarchive
|
327 |
}
|
328 |
}
|
329 |
|
330 |
+
return compact( 'noindex', 'nofollow', 'noarchive', 'max_snippet', 'max_image_preview', 'max_video_preview' );
|
331 |
}
|
332 |
|
333 |
/**
|
337 |
*
|
338 |
* @since 4.0.0
|
339 |
* @since 4.0.2 Added new copyright directive tags.
|
340 |
+
* @since 4.0.3 Changed `max_snippet_length` to `max_snippet`
|
341 |
*
|
342 |
* @param array|null $args The query arguments. Accepts 'id' and 'taxonomy'.
|
343 |
* @param int <bit> $ignore The ignore level. {
|
350 |
* bool 'noindex'
|
351 |
* bool 'nofollow'
|
352 |
* bool 'noarchive'
|
353 |
+
* false|int <R>=-1> 'max_snippet'
|
354 |
* false|string 'max_image_preview'
|
355 |
* fasle|int <R>=-1> 'max_video_preview'
|
356 |
* }
|
361 |
$nofollow = (bool) $this->get_option( 'site_nofollow' );
|
362 |
$noarchive = (bool) $this->get_option( 'site_noarchive' );
|
363 |
|
364 |
+
$max_snippet = $max_image_preview = $max_video_preview = false;
|
365 |
|
366 |
if ( $this->get_option( 'set_copyright_directives' ) ) {
|
367 |
+
$max_snippet = $this->get_option( 'max_snippet_length' );
|
368 |
+
$max_image_preview = $this->get_option( 'max_image_preview' );
|
369 |
+
$max_video_preview = $this->get_option( 'max_video_preview' );
|
370 |
}
|
371 |
|
372 |
if ( $args['taxonomy'] ) {
|
445 |
endif;
|
446 |
}
|
447 |
|
448 |
+
return compact( 'noindex', 'nofollow', 'noarchive', 'max_snippet', 'max_image_preview', 'max_video_preview' );
|
449 |
}
|
450 |
|
451 |
/**
|
inc/classes/init.class.php
CHANGED
@@ -476,7 +476,7 @@ class Init extends Query {
|
|
476 |
$url = '';
|
477 |
|
478 |
if ( $this->is_singular() ) {
|
479 |
-
// TODO
|
480 |
|
481 |
$url = $this->get_post_meta_item( 'redirect' ) ?: '';
|
482 |
} elseif ( $this->is_term_meta_capable() ) {
|
476 |
$url = '';
|
477 |
|
478 |
if ( $this->is_singular() ) {
|
479 |
+
// TODO exclude is_singular_archive()? Those can create issues...
|
480 |
|
481 |
$url = $this->get_post_meta_item( 'redirect' ) ?: '';
|
482 |
} elseif ( $this->is_term_meta_capable() ) {
|
inc/classes/sanitize.class.php
CHANGED
@@ -1759,7 +1759,7 @@ class Sanitize extends Admin_Pages {
|
|
1759 |
foreach ( [ 'clear', 'space' ] as $type ) {
|
1760 |
if ( empty( $args[ $type ] ) ) continue;
|
1761 |
|
1762 |
-
$_regex = sprintf( '<(%s)[^>]*?>((.*?)(<\/\1>))?', implode( $args[ $type ]
|
1763 |
$_replace = 'space' === $type ? ' $2 ' : ' ';
|
1764 |
|
1765 |
$input = preg_replace( "/$_regex/si", $_replace, $input );
|
1759 |
foreach ( [ 'clear', 'space' ] as $type ) {
|
1760 |
if ( empty( $args[ $type ] ) ) continue;
|
1761 |
|
1762 |
+
$_regex = sprintf( '<(%s)[^>]*?>((.*?)(<\/\1>))?', implode( '|', $args[ $type ] ) );
|
1763 |
$_replace = 'space' === $type ? ' $2 ' : ' ';
|
1764 |
|
1765 |
$input = preg_replace( "/$_regex/si", $_replace, $input );
|
inc/compat/plugin-woocommerce.php
CHANGED
@@ -15,6 +15,7 @@ defined( 'THE_SEO_FRAMEWORK_PRESENT' ) and $_this = \the_seo_framework_class() a
|
|
15 |
* Initializes WooCommerce compatibility.
|
16 |
*
|
17 |
* @since 3.1.0
|
|
|
18 |
* @access private
|
19 |
* @uses \is_product()
|
20 |
*/
|
@@ -30,6 +31,14 @@ function _init_wc_compat() {
|
|
30 |
}
|
31 |
}
|
32 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
34 |
|
35 |
\add_filter( 'the_seo_framework_image_generation_params', __NAMESPACE__ . '\\_adjust_image_generation_params', 10, 2 );
|
15 |
* Initializes WooCommerce compatibility.
|
16 |
*
|
17 |
* @since 3.1.0
|
18 |
+
* @since 4.0.3 Added primary term support to products.
|
19 |
* @access private
|
20 |
* @uses \is_product()
|
21 |
*/
|
31 |
}
|
32 |
}
|
33 |
);
|
34 |
+
|
35 |
+
$tsf = \the_seo_framework();
|
36 |
+
|
37 |
+
// Adjust the product link acknowledging the primary category.
|
38 |
+
\add_filter( 'wc_product_post_type_link_product_cat', [ $tsf, '_adjust_post_link_category' ], 10, 3 );
|
39 |
+
|
40 |
+
// Adjust the structured-data breadcrumb primary term. Coincidentally(?), it uses the same filter structure; although, it misses the $post object.
|
41 |
+
\add_filter( 'woocommerce_breadcrumb_main_term', [ $tsf, '_adjust_post_link_category' ], 10, 2 );
|
42 |
}
|
43 |
|
44 |
\add_filter( 'the_seo_framework_image_generation_params', __NAMESPACE__ . '\\_adjust_image_generation_params', 10, 2 );
|
inc/functions/upgrade-suggestion.php
CHANGED
@@ -121,7 +121,7 @@ function _suggest_extension_manager() {
|
|
121 |
[ 'a', 'strong' ],
|
122 |
[ 'a_internal' => false ]
|
123 |
),
|
124 |
-
'
|
125 |
false,
|
126 |
false
|
127 |
);
|
121 |
[ 'a', 'strong' ],
|
122 |
[ 'a_internal' => false ]
|
123 |
),
|
124 |
+
'info',
|
125 |
false,
|
126 |
false
|
127 |
);
|
inc/views/admin/metaboxes/robots-metabox.php
CHANGED
@@ -150,7 +150,8 @@ switch ( $instance ) :
|
|
150 |
$this->wrap_fields(
|
151 |
vsprintf(
|
152 |
'<p><label for="%1$s"><strong>%2$s</strong> %5$s</label></p>
|
153 |
-
<p><select name="%3$s" id="%1$s">%4$s</select></p>
|
|
|
154 |
[
|
155 |
$this->get_field_id( 'max_snippet_length' ),
|
156 |
esc_html__( 'Maximum text snippet length', 'autodescription' ),
|
@@ -161,6 +162,7 @@ switch ( $instance ) :
|
|
161 |
'',
|
162 |
false
|
163 |
),
|
|
|
164 |
]
|
165 |
),
|
166 |
true
|
@@ -186,7 +188,8 @@ switch ( $instance ) :
|
|
186 |
$this->wrap_fields(
|
187 |
vsprintf(
|
188 |
'<p><label for="%1$s"><strong>%2$s</strong> %5$s</label></p>
|
189 |
-
<p><select name="%3$s" id="%1$s">%4$s</select></p>
|
|
|
190 |
[
|
191 |
$this->get_field_id( 'max_image_preview' ),
|
192 |
esc_html__( 'Maximum image preview size', 'autodescription' ),
|
@@ -197,6 +200,15 @@ switch ( $instance ) :
|
|
197 |
'',
|
198 |
false
|
199 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
]
|
201 |
),
|
202 |
true
|
@@ -204,7 +216,7 @@ switch ( $instance ) :
|
|
204 |
|
205 |
$_video_snippet_types['default'] = [
|
206 |
-1 => __( 'Full video preview', 'autodescription' ),
|
207 |
-
0 => _x( 'None,
|
208 |
];
|
209 |
foreach ( range( 1, 600, 1 ) as $_n ) {
|
210 |
/* translators: %d = number */
|
150 |
$this->wrap_fields(
|
151 |
vsprintf(
|
152 |
'<p><label for="%1$s"><strong>%2$s</strong> %5$s</label></p>
|
153 |
+
<p><select name="%3$s" id="%1$s">%4$s</select></p>
|
154 |
+
<p class=description>%6$s</p>',
|
155 |
[
|
156 |
$this->get_field_id( 'max_snippet_length' ),
|
157 |
esc_html__( 'Maximum text snippet length', 'autodescription' ),
|
162 |
'',
|
163 |
false
|
164 |
),
|
165 |
+
esc_html__( "This directive also imposes a limit on meta descriptions and structured data, which unintentionally restricts the amount of information you can share. Therefore, it's best to use at least a 320 character limit.", 'autodescription' ),
|
166 |
]
|
167 |
),
|
168 |
true
|
188 |
$this->wrap_fields(
|
189 |
vsprintf(
|
190 |
'<p><label for="%1$s"><strong>%2$s</strong> %5$s</label></p>
|
191 |
+
<p><select name="%3$s" id="%1$s">%4$s</select></p>
|
192 |
+
<p class=description>%6$s</p>',
|
193 |
[
|
194 |
$this->get_field_id( 'max_image_preview' ),
|
195 |
esc_html__( 'Maximum image preview size', 'autodescription' ),
|
200 |
'',
|
201 |
false
|
202 |
),
|
203 |
+
$this->convert_markdown(
|
204 |
+
sprintf(
|
205 |
+
/* translators: Backticks and hyperlink are Markdown! %s = link to documentation. */
|
206 |
+
esc_html__( 'The "None, disallow preview" setting will not be used when `nofollow` or `noarchive` are set for a page. This is to work around unexpected deindexing behavior in Google Search. [Learn more](%s).', 'autodescription' ),
|
207 |
+
'https://kb.theseoframework.com/kb/why-is-max-image-preview-none-purged/'
|
208 |
+
),
|
209 |
+
[ 'code', 'a' ],
|
210 |
+
[ 'a_external' => true ]
|
211 |
+
),
|
212 |
]
|
213 |
),
|
214 |
true
|
216 |
|
217 |
$_video_snippet_types['default'] = [
|
218 |
-1 => __( 'Full video preview', 'autodescription' ),
|
219 |
+
0 => _x( 'None, still image only', 'quanity: zero', 'autodescription' ),
|
220 |
];
|
221 |
foreach ( range( 1, 600, 1 ) as $_n ) {
|
222 |
/* translators: %d = number */
|
language/autodescription.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the The SEO Framework package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: The SEO Framework 4.0.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/autodescription\n"
|
7 |
-
"POT-Creation-Date: 2019-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -164,33 +164,33 @@ msgstr ""
|
|
164 |
msgid "Multiple SEO tools have been detected. You should only use one."
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: inc/classes/admin-pages.class.php:
|
168 |
msgid "Dismiss this notice"
|
169 |
msgstr ""
|
170 |
|
171 |
-
#: inc/classes/admin-pages.class.php:
|
172 |
#: inc/classes/bridges/scripts.class.php:621
|
173 |
msgctxt "Button hover"
|
174 |
msgid "Select social image"
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: inc/classes/admin-pages.class.php:
|
178 |
#: inc/classes/bridges/scripts.class.php:620
|
179 |
msgid "Select Image"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: inc/classes/admin-pages.class.php:
|
183 |
#: inc/classes/bridges/scripts.class.php:629
|
184 |
msgid "Select Logo"
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: inc/classes/admin-pages.class.php:
|
188 |
msgid "Click to change the counter type"
|
189 |
msgstr ""
|
190 |
|
191 |
#. translators: %s = number
|
192 |
|
193 |
-
#: inc/classes/admin-pages.class.php:
|
194 |
msgid "Characters Used: %s"
|
195 |
msgstr ""
|
196 |
|
@@ -1550,7 +1550,7 @@ msgid "This outputs the complete date including hours, minutes, and timezone."
|
|
1550 |
msgstr ""
|
1551 |
|
1552 |
#: inc/views/admin/metaboxes/general-metabox.php:429
|
1553 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1554 |
msgid "Post Type Settings"
|
1555 |
msgstr ""
|
1556 |
|
@@ -1567,7 +1567,7 @@ msgid "Select post types which should not receive any SEO optimization whatsoeve
|
|
1567 |
msgstr ""
|
1568 |
|
1569 |
#: inc/views/admin/metaboxes/general-metabox.php:439
|
1570 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1571 |
msgid "These settings are applied to the post type pages and their terms. When terms are shared between post types, all their post types should be checked for this to have an effect."
|
1572 |
msgstr ""
|
1573 |
|
@@ -1854,81 +1854,96 @@ msgstr[0] ""
|
|
1854 |
msgstr[1] ""
|
1855 |
|
1856 |
#: inc/views/admin/metaboxes/robots-metabox.php:133
|
1857 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1858 |
msgid "Standard directive"
|
1859 |
msgstr ""
|
1860 |
|
1861 |
#: inc/views/admin/metaboxes/robots-metabox.php:134
|
1862 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1863 |
msgid "Granular directive"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1867 |
msgid "Maximum text snippet length"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1871 |
msgid "This may limit the text snippet length for all pages on this site."
|
1872 |
msgstr ""
|
1873 |
|
1874 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1875 |
-
|
|
|
|
|
|
|
1876 |
msgctxt "quanity: zero"
|
1877 |
msgid "None, disallow preview"
|
1878 |
msgstr ""
|
1879 |
|
1880 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1881 |
msgid "Thumbnail or standard size"
|
1882 |
msgstr ""
|
1883 |
|
1884 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1885 |
msgid "Large or full size"
|
1886 |
msgstr ""
|
1887 |
|
1888 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1889 |
msgid "Maximum image preview size"
|
1890 |
msgstr ""
|
1891 |
|
1892 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1893 |
msgid "This may limit the image preview size for all images from this site."
|
1894 |
msgstr ""
|
1895 |
|
|
|
|
|
|
|
1896 |
#: inc/views/admin/metaboxes/robots-metabox.php:206
|
|
|
|
|
|
|
|
|
1897 |
msgid "Full video preview"
|
1898 |
msgstr ""
|
1899 |
|
|
|
|
|
|
|
|
|
|
|
1900 |
#. translators: %d = number
|
1901 |
|
1902 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1903 |
msgid "%d second"
|
1904 |
msgid_plural "%d seconds"
|
1905 |
msgstr[0] ""
|
1906 |
msgstr[1] ""
|
1907 |
|
1908 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1909 |
msgid "Maximum video preview length"
|
1910 |
msgstr ""
|
1911 |
|
1912 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1913 |
msgid "This may limit the video preview length for all videos on this site."
|
1914 |
msgstr ""
|
1915 |
|
1916 |
#. translators: 1 = noindex/nofollow/noarchive, 2 = Post, Post type, Category
|
1917 |
#. archives, the entire site, etc.
|
1918 |
|
1919 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1920 |
msgid "Apply %1$s to %2$s?"
|
1921 |
msgstr ""
|
1922 |
|
1923 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1924 |
msgid "Robots Settings"
|
1925 |
msgstr ""
|
1926 |
|
1927 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1928 |
msgid "Warning: No public site should ever enable this option."
|
1929 |
msgstr ""
|
1930 |
|
1931 |
-
#: inc/views/admin/metaboxes/robots-metabox.php:
|
1932 |
msgid "Warning: No site should enable these options for Posts and Pages."
|
1933 |
msgstr ""
|
1934 |
|
2 |
# This file is distributed under the same license as the The SEO Framework package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: The SEO Framework 4.0.3\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/autodescription\n"
|
7 |
+
"POT-Creation-Date: 2019-11-11 17:46:56+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
164 |
msgid "Multiple SEO tools have been detected. You should only use one."
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: inc/classes/admin-pages.class.php:390
|
168 |
msgid "Dismiss this notice"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: inc/classes/admin-pages.class.php:1041
|
172 |
#: inc/classes/bridges/scripts.class.php:621
|
173 |
msgctxt "Button hover"
|
174 |
msgid "Select social image"
|
175 |
msgstr ""
|
176 |
|
177 |
+
#: inc/classes/admin-pages.class.php:1052
|
178 |
#: inc/classes/bridges/scripts.class.php:620
|
179 |
msgid "Select Image"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: inc/classes/admin-pages.class.php:1098
|
183 |
#: inc/classes/bridges/scripts.class.php:629
|
184 |
msgid "Select Logo"
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: inc/classes/admin-pages.class.php:1148
|
188 |
msgid "Click to change the counter type"
|
189 |
msgstr ""
|
190 |
|
191 |
#. translators: %s = number
|
192 |
|
193 |
+
#: inc/classes/admin-pages.class.php:1151
|
194 |
msgid "Characters Used: %s"
|
195 |
msgstr ""
|
196 |
|
1550 |
msgstr ""
|
1551 |
|
1552 |
#: inc/views/admin/metaboxes/general-metabox.php:429
|
1553 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:313
|
1554 |
msgid "Post Type Settings"
|
1555 |
msgstr ""
|
1556 |
|
1567 |
msgstr ""
|
1568 |
|
1569 |
#: inc/views/admin/metaboxes/general-metabox.php:439
|
1570 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:315
|
1571 |
msgid "These settings are applied to the post type pages and their terms. When terms are shared between post types, all their post types should be checked for this to have an effect."
|
1572 |
msgstr ""
|
1573 |
|
1854 |
msgstr[1] ""
|
1855 |
|
1856 |
#: inc/views/admin/metaboxes/robots-metabox.php:133
|
1857 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:229
|
1858 |
msgid "Standard directive"
|
1859 |
msgstr ""
|
1860 |
|
1861 |
#: inc/views/admin/metaboxes/robots-metabox.php:134
|
1862 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:230
|
1863 |
msgid "Granular directive"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:157
|
1867 |
msgid "Maximum text snippet length"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:161
|
1871 |
msgid "This may limit the text snippet length for all pages on this site."
|
1872 |
msgstr ""
|
1873 |
|
1874 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:165
|
1875 |
+
msgid "This directive also imposes a limit on meta descriptions and structured data, which unintentionally restricts the amount of information you can share. Therefore, it's best to use at least a 320 character limit."
|
1876 |
+
msgstr ""
|
1877 |
+
|
1878 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:174
|
1879 |
msgctxt "quanity: zero"
|
1880 |
msgid "None, disallow preview"
|
1881 |
msgstr ""
|
1882 |
|
1883 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:175
|
1884 |
msgid "Thumbnail or standard size"
|
1885 |
msgstr ""
|
1886 |
|
1887 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:176
|
1888 |
msgid "Large or full size"
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:195
|
1892 |
msgid "Maximum image preview size"
|
1893 |
msgstr ""
|
1894 |
|
1895 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:199
|
1896 |
msgid "This may limit the image preview size for all images from this site."
|
1897 |
msgstr ""
|
1898 |
|
1899 |
+
#. translators: Backticks and hyperlink are Markdown! %s = link to
|
1900 |
+
#. documentation.
|
1901 |
+
|
1902 |
#: inc/views/admin/metaboxes/robots-metabox.php:206
|
1903 |
+
msgid "The \"None, disallow preview\" setting will not be used when `nofollow` or `noarchive` are set for a page. This is to work around unexpected deindexing behavior in Google Search. [Learn more](%s)."
|
1904 |
+
msgstr ""
|
1905 |
+
|
1906 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:218
|
1907 |
msgid "Full video preview"
|
1908 |
msgstr ""
|
1909 |
|
1910 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:219
|
1911 |
+
msgctxt "quanity: zero"
|
1912 |
+
msgid "None, still image only"
|
1913 |
+
msgstr ""
|
1914 |
+
|
1915 |
#. translators: %d = number
|
1916 |
|
1917 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:223
|
1918 |
msgid "%d second"
|
1919 |
msgid_plural "%d seconds"
|
1920 |
msgstr[0] ""
|
1921 |
msgstr[1] ""
|
1922 |
|
1923 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:252
|
1924 |
msgid "Maximum video preview length"
|
1925 |
msgstr ""
|
1926 |
|
1927 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:256
|
1928 |
msgid "This may limit the video preview length for all videos on this site."
|
1929 |
msgstr ""
|
1930 |
|
1931 |
#. translators: 1 = noindex/nofollow/noarchive, 2 = Post, Post type, Category
|
1932 |
#. archives, the entire site, etc.
|
1933 |
|
1934 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:271
|
1935 |
msgid "Apply %1$s to %2$s?"
|
1936 |
msgstr ""
|
1937 |
|
1938 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:276
|
1939 |
msgid "Robots Settings"
|
1940 |
msgstr ""
|
1941 |
|
1942 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:301
|
1943 |
msgid "Warning: No public site should ever enable this option."
|
1944 |
msgstr ""
|
1945 |
|
1946 |
+
#: inc/views/admin/metaboxes/robots-metabox.php:320
|
1947 |
msgid "Warning: No site should enable these options for Posts and Pages."
|
1948 |
msgstr ""
|
1949 |
|
lib/css/settings.css
CHANGED
@@ -26,7 +26,7 @@ body.rtl .tsf-top-wrap > h1 {
|
|
26 |
float: right;
|
27 |
}
|
28 |
|
29 |
-
body.rtl .tsf-top-
|
30 |
float: left;
|
31 |
}
|
32 |
|
@@ -145,6 +145,7 @@ body.rtl .tsf-bottom-buttons {
|
|
145 |
background: #f1f1f1;
|
146 |
color: #555;
|
147 |
font-weight: 600;
|
|
|
148 |
}
|
149 |
|
150 |
body.rtl .tsf-nav-tab {
|
26 |
float: right;
|
27 |
}
|
28 |
|
29 |
+
body.rtl .tsf-top-buttons {
|
30 |
float: left;
|
31 |
}
|
32 |
|
145 |
background: #f1f1f1;
|
146 |
color: #555;
|
147 |
font-weight: 600;
|
148 |
+
border-radius: 3px 3px 0 0;
|
149 |
}
|
150 |
|
151 |
body.rtl .tsf-nav-tab {
|
lib/css/settings.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tsf-metaboxes{box-sizing:border-box;max-width:690px;padding-bottom:20px}.tsf-top-wrap{width:100%;display:inline-block;vertical-align:top}.tsf-top-wrap>h1{float:left}body.rtl .tsf-top-wrap>h1{float:right}.tsf-metaboxes .metabox-holder{clear:both}.tsf-top-buttons{float:right}body.rtl .tsf-top-
|
1 |
+
.tsf-metaboxes{box-sizing:border-box;max-width:690px;padding-bottom:20px}.tsf-top-wrap{width:100%;display:inline-block;vertical-align:top}.tsf-top-wrap>h1{float:left}body.rtl .tsf-top-wrap>h1{float:right}.tsf-metaboxes .metabox-holder{clear:both}.tsf-top-buttons{float:right}body.rtl .tsf-top-buttons{float:left}.tsf-bottom-buttons{text-align:right}body.rtl .tsf-bottom-buttons{text-align:left}.tsf-metaboxes .tsf-bottom-buttons input,.tsf-metaboxes .tsf-top-buttons input{margin-left:10px}#tsf-description-separator,#tsf-title-separator{display:table;width:100%;border-collapse:collapse;border-spacing:0}#tsf-description-separator{margin-bottom:0}#tsf-description-separator input,#tsf-title-separator input{display:none;float:left;width:0;min-width:0;opacity:0}#tsf-description-separator label,#tsf-title-separator label{display:inline-block;width:auto;min-width:28px;min-height:28px;margin:3px;-moz-margin-end:1.5px;-moz-margin-start:1.5px;padding:0 4px;border:1px solid #ccc;line-height:28px;text-align:center;cursor:pointer;box-shadow:-1px -1px 1px #aaa inset;font-size:16px}#tsf-description-separator input:hover+label,#tsf-description-separator label:hover,#tsf-title-separator input:hover+label,#tsf-title-separator label:hover{box-shadow:1px 1px 1px #aaa inset;background-color:#fff}#tsf-description-separator input:checked+label,#tsf-title-separator input:checked+label{box-shadow:1px 1px 1px #333 inset;background-color:#fff}#tsf-home-title-location,#tsf-title-location{display:block}#tsf-home-title-location label span,#tsf-title-location label span{display:inline-block;min-width:60px;vertical-align:baseline}#tsf-home-title-location label .tsf-custom-blogname-js,#tsf-home-title-location label .tsf-custom-tagline-js,#tsf-home-title-location label .tsf-custom-title-js,#tsf-home-title-location label .tsf-sep-js,#tsf-title-location label .tsf-sep-js,#tsf-title-location label .tsf-title-additions-js{display:inline;min-width:0;white-space:pre}.tsf-nav-tab-wrapper,.tsf-tab-no-js{position:relative;clear:both;width:100%;display:inline-block;border-bottom:1px solid #ccc;line-height:inherit;padding:8px 12px 0;margin:-4px -12px}.tsf-nav-tab{float:left;border:1px solid #ccc;margin-left:.5em;margin-bottom:-1px;padding:5px 14px;font-size:12px;line-height:16px;background:#f1f1f1;color:#555;font-weight:600;border-radius:3px 3px 0 0}body.rtl .tsf-nav-tab{float:right;margin-left:0;margin-right:.5em}.tsf-nav-desktop{margin-left:7px}.tsf-dashicons-tabs{font-size:initial;display:inline;vertical-align:text-bottom}input.tsf-tabs-radio{position:absolute;width:0;height:0;opacity:0;margin:0;padding:0;border:0;z-index:-1;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tsf-active-tab,.tsf-tabs-radio:checked+label{background-color:inherit;border-bottom-color:#fff;color:#000}.tsf-tabs-radio:focus+label:not(.tsf-no-focus-ring){box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);border-color:#fff}.tsf-tabs-content{margin:1.33em auto 0}.tsf-tabs-content select{width:100%;max-width:max-content;text-overflow:ellipsis}.tsf-content-no-js{margin:1.33em auto}body.js .tsf-tabs-content{display:none}body.js .tsf-tabs-content.tsf-active-tab-content{display:block}
|
lib/css/tsf.css
CHANGED
@@ -42,17 +42,23 @@ body.rtl .tsf-notice.tsf-show-icon p:before {
|
|
42 |
}
|
43 |
|
44 |
.error.tsf-notice.tsf-show-icon p:before {
|
45 |
-
color: #
|
46 |
content: "\f534";
|
47 |
}
|
48 |
|
49 |
.notice-warning.tsf-notice.tsf-show-icon p:before {
|
50 |
-
color: #
|
51 |
content: "\f227";
|
52 |
}
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
.updated.tsf-notice.tsf-show-icon p:before {
|
55 |
-
color: #
|
56 |
font-size: 16px;
|
57 |
content: "\f147";
|
58 |
}
|
@@ -60,10 +66,10 @@ body.rtl .tsf-notice.tsf-show-icon p:before {
|
|
60 |
a.tsf-dismiss {
|
61 |
position: absolute;
|
62 |
top: 0;
|
63 |
-
right:
|
64 |
border: none;
|
65 |
margin: 0;
|
66 |
-
padding:
|
67 |
background: 0 0;
|
68 |
color: #72777c;
|
69 |
cursor: pointer;
|
@@ -72,7 +78,7 @@ a.tsf-dismiss {
|
|
72 |
|
73 |
body.rtl a.tsf-dismiss {
|
74 |
right: initial;
|
75 |
-
left:
|
76 |
}
|
77 |
|
78 |
a.tsf-dismiss:before {
|
@@ -160,7 +166,6 @@ body.rtl #tsf-title-placeholder-prefix {
|
|
160 |
display: block;
|
161 |
width: 95%;
|
162 |
max-width: 190px;
|
163 |
-
border-radius: 0;
|
164 |
padding: 0;
|
165 |
}
|
166 |
|
@@ -185,6 +190,11 @@ body.rtl #tsf-title-placeholder-prefix {
|
|
185 |
text-shadow: 0 0 3px rgba(0,0,0,0.5);
|
186 |
}
|
187 |
|
|
|
|
|
|
|
|
|
|
|
188 |
body.no-js .tsf-seo-bar-item {
|
189 |
cursor: default;
|
190 |
}
|
42 |
}
|
43 |
|
44 |
.error.tsf-notice.tsf-show-icon p:before {
|
45 |
+
color: #dc3232;
|
46 |
content: "\f534";
|
47 |
}
|
48 |
|
49 |
.notice-warning.tsf-notice.tsf-show-icon p:before {
|
50 |
+
color: #ffb900;
|
51 |
content: "\f227";
|
52 |
}
|
53 |
|
54 |
+
.notice-info.tsf-notice.tsf-show-icon p:before {
|
55 |
+
color: #00a0d2;
|
56 |
+
font-size: 16px;
|
57 |
+
content: "\f223";
|
58 |
+
}
|
59 |
+
|
60 |
.updated.tsf-notice.tsf-show-icon p:before {
|
61 |
+
color: #46b450;
|
62 |
font-size: 16px;
|
63 |
content: "\f147";
|
64 |
}
|
66 |
a.tsf-dismiss {
|
67 |
position: absolute;
|
68 |
top: 0;
|
69 |
+
right: 0;
|
70 |
border: none;
|
71 |
margin: 0;
|
72 |
+
padding: 10px;
|
73 |
background: 0 0;
|
74 |
color: #72777c;
|
75 |
cursor: pointer;
|
78 |
|
79 |
body.rtl a.tsf-dismiss {
|
80 |
right: initial;
|
81 |
+
left: 0;
|
82 |
}
|
83 |
|
84 |
a.tsf-dismiss:before {
|
166 |
display: block;
|
167 |
width: 95%;
|
168 |
max-width: 190px;
|
|
|
169 |
padding: 0;
|
170 |
}
|
171 |
|
190 |
text-shadow: 0 0 3px rgba(0,0,0,0.5);
|
191 |
}
|
192 |
|
193 |
+
.tsf-seo-bar-item:focus {
|
194 |
+
outline: none;
|
195 |
+
box-shadow: 0 0 0 1px currentColor inset;
|
196 |
+
}
|
197 |
+
|
198 |
body.no-js .tsf-seo-bar-item {
|
199 |
cursor: default;
|
200 |
}
|
lib/css/tsf.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tsf-js .hide-if-tsf-js,.tsf-no-js .hide-if-no-tsf-js{display:none}.notice.tsf-notice{position:relative;padding-right:38px}body.rtl .notice.tsf-notice{padding-right:12px;padding-left:38px}.tsf-notice.tsf-show-icon p:before{content:'';margin-right:12px;background:0 0;display:inline-block;font:400 14px/16px dashicons;speak:none;height:16px;text-align:center;vertical-align:middle;width:16px;line-height:14px;-webkit-font-smoothing:antialiased}body.rtl .tsf-notice.tsf-show-icon p:before{margin-right:0;margin-left:12px}.error.tsf-notice.tsf-show-icon p:before{color:#
|
1 |
+
.tsf-js .hide-if-tsf-js,.tsf-no-js .hide-if-no-tsf-js{display:none}.notice.tsf-notice{position:relative;padding-right:38px}body.rtl .notice.tsf-notice{padding-right:12px;padding-left:38px}.tsf-notice.tsf-show-icon p:before{content:'';margin-right:12px;background:0 0;display:inline-block;font:400 14px/16px dashicons;speak:none;height:16px;text-align:center;vertical-align:middle;width:16px;line-height:14px;-webkit-font-smoothing:antialiased}body.rtl .tsf-notice.tsf-show-icon p:before{margin-right:0;margin-left:12px}.error.tsf-notice.tsf-show-icon p:before{color:#dc3232;content:"\f534"}.notice-warning.tsf-notice.tsf-show-icon p:before{color:#ffb900;content:"\f227"}.notice-info.tsf-notice.tsf-show-icon p:before{color:#00a0d2;font-size:16px;content:"\f223"}.updated.tsf-notice.tsf-show-icon p:before{color:#46b450;font-size:16px;content:"\f147"}a.tsf-dismiss{position:absolute;top:0;right:0;border:none;margin:0;padding:10px;background:0 0;color:#72777c;cursor:pointer;text-decoration:none}body.rtl a.tsf-dismiss{right:initial;left:0}a.tsf-dismiss:before{background:0 0;content:"\f153";display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a.tsf-dismiss:hover{color:#c00}.tsf-seo-bar-item{text-decoration:none;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#tsf-title-wrap{position:relative;display:block;padding:0;height:auto;width:auto;overflow:hidden}#tsf-title-offset{visibility:hidden;height:0;display:inline-block;position:absolute;left:0;color:transparent;white-space:pre}body.rtl #sf-title-offset{left:initial;right:0}#tsf-title-placeholder,#tsf-title-placeholder-prefix{position:absolute;color:#777;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box;top:0;left:0;overflow:hidden;white-space:pre;text-overflow:ellipsis;will-change:left,right}body.rtl #tsf-title-placeholder,body.rtl #tsf-title-placeholder-prefix{left:initial;right:0}#tsf-title-placeholder{display:none}.fixed .column-tsf-seo-bar-wrap{width:11%}.tsf-seo-bar{display:block;width:95%;max-width:190px;padding:0}.tsf-seo-bar-inner-wrap{display:flex;flex-direction:row;flex:1 1 auto;flex-wrap:wrap;justify-content:flex-start}.tsf-seo-bar-section-wrap{min-width:2em;flex:1 1 auto}.tsf-seo-bar-item{display:block;color:#fff;text-align:center;border:1px solid rgba(0,0,0,.1);text-shadow:0 0 3px rgba(0,0,0,.5)}.tsf-seo-bar-item:focus{outline:0;box-shadow:0 0 0 1px currentColor inset}body.no-js .tsf-seo-bar-item{cursor:default}.tsf-seo-bar-bad{background-color:#dd3811}.tsf-seo-bar-okay{background-color:#ffa700}.tsf-seo-bar-good{background-color:#0cc34b}.tsf-seo-bar-unknown{background-color:#007bd2}.tsf-seo-bar-wrap.column-tsf-seo-bar-temp{overflow:initial!important;min-width:160px}#col-container,#col-right{overflow:initial}.tsf-help{font-weight:400}.tsf-notice{clear:both}.tsf-flex{box-sizing:border-box;display:flex;flex:1 1 auto;flex-flow:column wrap;justify-content:flex-start}input.tsf-default-selected{border-color:#1c9d38}input.tsf-default-selected:checked:before{color:#1c9d38}input.tsf-warning-selected{border-color:#dd3811}input.tsf-warning-selected:checked:before{color:#dd3811}label.tsf-disabled{color:#999}input.tsf-disabled,label.tsf-disabled{cursor:default}.tsf-fields{font-size:13px;line-height:1.5;margin:1em 0}.tsf-fields .tsf-toblock{display:block;width:100%;margin-bottom:4px}.tsf-fields p.description{margin:7px 0 5px;color:#666}.tsf-option-spacer{margin:1em 0}.tsf-select-wrap{margin-top:7px;margin-bottom:14px}.tsf-select-wrap:last-of-type{margin-bottom:0}.tsf-select-block>select{margin-top:7px;margin-bottom:14px;display:block}.tsf-select-block:last-of-type>select{margin-bottom:0}.tsf-checkbox-wrapper{margin-top:15px}.tsf-checkbox-wrapper:first-child{margin-top:0}.tsf-metaboxes legend h4{margin:2px 0}.tsf-metaboxes legend p:last-of-type{margin-bottom:0}.tsf-counter .tsf-ajax{margin-left:3px}body.rtl .tsf-counter .tsf-aja{margin-left:0;margin-right:3px}.tsf-ajax:before{display:inline-block;line-height:1;font-family:dashicons;font-style:normal;font-weight:400;font-size:1.225em;vertical-align:middle;content:""}.tsf-ajax.tsf-loading:before{content:"\f463";color:#007bd2;-webkit-animation:tsf-spin 1.5s linear infinite;-moz-animation:tsf-spin 1.5s linear infinite;-o-animation:tsf-spin 1.5s linear infinite;animation:tsf-spin 1.5s linear infinite}.tsf-ajax.tsf-error:before{content:"\f158";color:#dd3811}.tsf-ajax.tsf-success:before{content:"\f147";color:#0cc34b}.tsf-remove-image-button.button,.tsf-set-image-button.button{margin-right:8px}body.rtl .tsf-remove-image-button.button,body.rtl .tsf-set-image-button.button{margin-right:0;margin-left:8px}.tsf-image-preview{line-height:inherit;vertical-align:text-bottom}#tsf-inpost-box input[type=text]::-webkit-input-placeholder,#tsf-inpost-box textarea::-webkit-input-placeholder,.tsf-metaboxes input[type=text]::-webkit-input-placeholder,.tsf-metaboxes textarea::-webkit-input-placeholder{transition:color .33s ease-in,text-shadow .33s ease-in}#tsf-inpost-box input[type=text]::-moz-placeholder,#tsf-inpost-box textarea::-moz-placeholder,.tsf-metaboxes input[type=text]::-moz-placeholder,.tsf-metaboxes textarea::-moz-placeholder{transition:color .33s ease-in,text-shadow .33s ease-in}#tsf-inpost-box input[type=text]:-ms-input-placeholder,#tsf-inpost-box textarea:-ms-input-placeholder,.tsf-metaboxes input[type=text]:-ms-input-placeholder,.tsf-metaboxes textarea:-ms-input-placeholder{transition:color .33s ease-in,text-shadow .33s ease-in}#tsf-inpost-box input[type=text]:focus::-webkit-input-placeholder,#tsf-inpost-box textarea:focus::-webkit-input-placeholder,.tsf-metaboxes input[type=text]:focus::-webkit-input-placeholder,.tsf-metaboxes textarea:focus::-webkit-input-placeholder{color:transparent;text-shadow:0 0 1px rgba(114,119,124,.75)}#tsf-inpost-box input[type=text]:focus::-moz-placeholder,#tsf-inpost-box textarea:focus::-moz-placeholder,.tsf-metaboxe textarea:focus::-moz-placeholder,.tsf-metaboxes input[type=text]:focus::-moz-placeholder{color:transparent;text-shadow:0 0 1px rgba(114,119,124,.75)}#tsf-inpost-box input[type=text]:focus:-ms-input-placeholder,#tsf-inpost-box textarea:focus:-ms-input-placeholder,.tsf-metaboxes input[type=text]:focus:-ms-input-placeholder,.tsf-metaboxes textarea:focus:-ms-input-placeholder{color:transparent;text-shadow:0 0 1px rgba(114,119,124,.75)}@-webkit-keyframes tsf-spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes tsf-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@media screen and (max-width:782px){.notice.tsf-notice,.wp-core-ui .notice.tsf-notice{padding-right:46px}body.rtl .notice.tsf-notice,body.rtl.wp-core-ui .notice.tsf-notice{padding-right:10px;padding-left:46px}.tsf-inpost-box p.tsf-fields,.tsf-metaboxes p.tsf-fields{line-height:2.8}#tsf-home-title-location label span,#tsf-title-location label span{min-width:40px}.wp-list-table .is-expanded td.tsf-seo-bar-wrap:not(.hidden){overflow:initial!important}}@media screen and (max-width:642px){.tsf-nav-desktop{display:none}}@-moz-document url-prefix(){input.tsf-default-selected{box-shadow:0 0 0 1px #1c9d38}input.tsf-warning-selected{box-shadow:0 0 0 1px #dd3811}}
|
lib/js/media.js
CHANGED
@@ -113,7 +113,7 @@ window.tsfMedia = function( $ ) {
|
|
113 |
};
|
114 |
|
115 |
cropper.control = {
|
116 |
-
|
117 |
flex_width: _states.isFlex ? 4096 : 0,
|
118 |
flex_height: _states.isFlex ? 4096 : 0,
|
119 |
width: _states.suggestedWidth,
|
@@ -185,7 +185,7 @@ window.tsfMedia = function( $ ) {
|
|
185 |
'swing'
|
186 |
);
|
187 |
|
188 |
-
_appendRemoveButton( $button, {
|
189 |
tsfAys && tsfAys.registerChange();
|
190 |
};
|
191 |
frame.off( 'skippedcrop cropped', onDone );
|
@@ -600,6 +600,8 @@ window.tsfMedia = function( $ ) {
|
|
600 |
* Sets up jQuery image editor cache.
|
601 |
*
|
602 |
* @since 3.1.0
|
|
|
|
|
603 |
* @access private
|
604 |
*
|
605 |
* @function
|
113 |
};
|
114 |
|
115 |
cropper.control = {
|
116 |
+
params: {
|
117 |
flex_width: _states.isFlex ? 4096 : 0,
|
118 |
flex_height: _states.isFlex ? 4096 : 0,
|
119 |
width: _states.suggestedWidth,
|
185 |
'swing'
|
186 |
);
|
187 |
|
188 |
+
_appendRemoveButton( $button, { id: inputID, type: inputType }, true );
|
189 |
tsfAys && tsfAys.registerChange();
|
190 |
};
|
191 |
frame.off( 'skippedcrop cropped', onDone );
|
600 |
* Sets up jQuery image editor cache.
|
601 |
*
|
602 |
* @since 3.1.0
|
603 |
+
* TODO set a callback.
|
604 |
+
* @see tsfemMedia.setupImageEditorActions() (Extension Manager plugin)
|
605 |
* @access private
|
606 |
*
|
607 |
* @function
|
lib/js/settings.js
CHANGED
@@ -755,13 +755,14 @@ window.tsfSettings = function( $ ) {
|
|
755 |
* You shouldn't call this.
|
756 |
*
|
757 |
* @since 4.0.0
|
|
|
758 |
* @access protected
|
759 |
*
|
760 |
* @function
|
761 |
* @return {undefined}
|
762 |
*/
|
763 |
load: () => {
|
764 |
-
$( 'div.updated, div.error, div.notice, .notice-error, .notice-warning' ).insertAfter( '.tsf-top-wrap' )
|
765 |
|
766 |
$( document.body ).on( 'tsf-onload', _loadSettings );
|
767 |
$( document.body ).on( 'tsf-ready', _readySettings );
|
755 |
* You shouldn't call this.
|
756 |
*
|
757 |
* @since 4.0.0
|
758 |
+
* @since 4.0.3 Now also displaces notice-info.
|
759 |
* @access protected
|
760 |
*
|
761 |
* @function
|
762 |
* @return {undefined}
|
763 |
*/
|
764 |
load: () => {
|
765 |
+
$( 'div.updated, div.error, div.notice, .notice-error, .notice-warning, .notice-info' ).insertAfter( '.tsf-top-wrap' )
|
766 |
|
767 |
$( document.body ).on( 'tsf-onload', _loadSettings );
|
768 |
$( document.body ).on( 'tsf-ready', _readySettings );
|
lib/js/settings.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
'use strict';window.tsfSettings=function(a){const b="undefined"!=typeof tsfSettingsL10n&&tsfSettingsL10n,c=()=>{const b=b=>{a(b.target).is(":checked")?(a(".tsf-pixel-counter-wrap").show(),tsfC.triggerCounterUpdate()):a(".tsf-pixel-counter-wrap").hide()};a("#autodescription-site-settings\\[display_character_counter\\]").on("click",b),a("#autodescription-site-settings\\[display_pixel_counter\\]").on("click",b)},d=()=>{let b=a(".tsf-color-picker");b.length&&a.each(b,(b,c)=>{let d=a(c),e="",f=d.data("tsf-default-color");d.wpColorPicker({defaultColor:f,width:238,change:()=>{e=d.wpColorPicker("color"),""===e&&(e=f),d.val(e),tsfAys.registerChange()},clear:()=>{f.length&&(d.val(f),d.closest(".wp-picker-container").find(".wp-color-result").css("backgroundColor",f)),tsfAys.registerChange()},palettes:!1})})},e=()=>{let b=document.getElementById("#autodescription-site-settings[title_rem_additions]");a(b).on("change",()=>{let c=a(".tsf-title-additions-js");a(b).is(":checked")?c.css("display","none"):c.css("display","inline")}),a(b).trigger("change");a("#tsf-title-location input").on("click",b=>{let c=a(".tsf-title-additions-example-left"),d=a(".tsf-title-additions-example-right");"right"===a(b.target).val()?(c.css("display","none"),d.css("display","inline")):(c.css("display","inline"),d.css("display","none"))});a("#tsf-title-prefixes-toggle :input").on("click",b=>{let c=a(b.target),d=a(".tsf-title-prefix-example");c.is(":checked")?d.css("display","none"):d.css("display","inline")});a("#tsf-title-separator :input").on("click",b=>{let c=b.target.value,d="";switch(c){case"pipe":d="|";break;default:d=a("<div/>").html("&"+c+";").text();}a(".tsf-sep-js").text(" "+d+" "),a(window).trigger("tsf-title-sep-updated",[d])})},f=()=>{const c=document.getElementById("autodescription-site-settings[homepage_title]"),d=document.getElementById("autodescription-site-settings[homepage_title_tagline]"),e=document.getElementById("autodescription-site-settings[homepage_tagline]"),f=tsf.escapeString(b.i18n.protectedTitle),g=tsf.escapeString(b.i18n.privateTitle);tsfTitle.setInputElement(c);const h=()=>{let b=tsfTitle.getState("additionPlacement"),c="after";tsf.l10n.states.isRTL?"right"===a("#tsf-home-title-location input:checked").val()&&(c="before"):"left"===a("#tsf-home-title-location input:checked").val()&&(c="before"),c!==b&&tsfTitle.updateState("additionPlacement",c)};h(),a("#tsf-home-title-location").on("click",":input",h);const i=a=>{let b=tsfTitle.getState("prefixValue"),c="";switch(a){case"password":c=f;break;case"private":c=g;break;default:case"public":c="";}c!==b&&tsfTitle.updateState("prefixValue",c)};b.states.isFrontPrivate?i("private"):b.states.isFrontProtected&&i("password");a(c).on("input.tsfInputTitle",b=>{let c=a(".tsf-custom-title-js"),d=tsf.decodeEntities(tsf.sDoubleSpace(b.target.value.trim()));d.length?c.html(tsf.escapeString(d)):c.html(tsf.escapeString(tsf.decodeEntities(tsfTitle.getState("defaultTitle"))))}),a(c).trigger("input.tsfInputTitle");let j,k=a(".tsf-custom-tagline-js");const l=()=>{clearTimeout(j),j=setTimeout(()=>{let b=tsfTitle.getState("additionValue");b=tsf.decodeEntities(tsf.sDoubleSpace(b.trim())),b.length&&tsfTitle.getState("useTagline")?(k.html(tsf.escapeString(b)),a(".tsf-custom-blogname-js").show()):a(".tsf-custom-blogname-js").hide()})};a(d).on("input.tsfInputTagline",()=>{let a=tsfTitle.getState("additionValue"),b=d.value.trim();b.length||(b=d.placeholder||""),b=tsf.escapeString(tsf.decodeEntities(b.trim())),a!==b&&(tsfTitle.updateState("additionValue",b),l())}),a(d).trigger("input.tsfInputTagline");a(e).on("change.tsfToggleTagline",a=>{let b=!1;a.target.checked?(b=!0,d.readOnly=!1):(b=!1,d.readOnly=!0),tsfTitle.updateState("useTagline",b),l()}),a(e).trigger("change.tsfToggleTagline");a(window).on("tsf-title-sep-updated",(a,b)=>{tsfTitle.updateState("separator",b)}),tsfTitle.enqueueUnregisteredInputTrigger()},g=()=>{tsfDescription.setInputElement(document.getElementById("autodescription-site-settings[homepage_description]")),tsfDescription.enqueueUnregisteredInputTrigger()},h=()=>{const b=()=>{tsfTitle.enqueueUnregisteredInputTrigger(),tsfDescription.enqueueUnregisteredInputTrigger()};a(document).on("postbox-toggled",function(a,c){if("autodescription-homepage-settings"===c.id){let a=c.querySelector(".inside");0<a.offsetHeight&&0<a.offsetWidth&&b()}}),a("#tsf-homepage-tab-general").on("tsf-tab-toggled",tsfTitle.enqueueUnregisteredInputTrigger)},i=()=>{const b=a("#autodescription-site-settings\\[set_copyright_directives\\]"),c=a("#autodescription-site-settings\\[max_snippet_length\\], #autodescription-site-settings\\[max_image_preview\\], #autodescription-site-settings\\[max_video_preview\\]");if(b.length&&c.length){b.on("change.tsfToggleDirectives",b=>{b.target.checked?(c.prop("disabled",!1),a(".tsf-toggle-directives-surrogate").remove()):(c.prop("disabled",!0),c.each((b,c)=>{a("<input />").attr("type","hidden").attr("name",c.name||"").val(c.value||0).addClass("tsf-toggle-directives-surrogate").insertAfter(c)}))}),b.trigger("change.tsfToggleDirectives")}},j=()=>{const b=a("#autodescription-site-settings\\[google_verification\\], #autodescription-site-settings\\[bing_verification\\], #autodescription-site-settings\\[yandex_verification\\], #autodescription-site-settings\\[pint_verification\\]");if(b.length){const a=a=>{let b=a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData("text")||void 0;if(b){let c=/<meta[^>]+content=(\"|\')?([^\"\'>\s]+)\1?.*?>/i.exec(b);c&&2 in c&&"string"==typeof c[2]&&c[2].length&&(a.stopPropagation(),a.preventDefault(),a.target.value=c[2],tsfAys.registerChange())}};b.on("paste",a)}},k=()=>{c(),e(),f(),g(),h(),i(),j(),d()},l=()=>{tsfSocial.initTitleInputs({ref:document.getElementById("tsf-title-reference"),meta:document.getElementById("autodescription-site-settings[homepage_title]"),og:document.getElementById("autodescription-site-settings[homepage_og_title]"),tw:document.getElementById("autodescription-site-settings[homepage_twitter_title]")}),tsfSocial.initDescriptionInputs({ref:document.getElementById("tsf-description-reference"),meta:document.getElementById("autodescription-site-settings[homepage_description]"),og:document.getElementById("autodescription-site-settings[homepage_og_description]"),tw:document.getElementById("autodescription-site-settings[homepage_twitter_description]")})},m=()=>confirm(b.i18n.confirmReset),n=()=>{a(".tsf-tabs-radio").on("change",(b,c)=>{let d=a(b.target);if(!d.is(":checked"))return;c="boolean"==typeof c&&c;let e=b.target.id,f=b.target.name,g="tsf-active-tab-content",h="tsf-tab-active",i=a("."+g),j=d.closest(".tsf-nav-tab-wrapper").find("."+h),k=i.find("input:invalid, select:invalid, textarea:invalid");if(k.length)return k[0].reportValidity(),j.prop("checked",!0),d.prop("checked",!1),b.stopPropagation(),b.preventDefault(),!1;let l=a("#"+e+"-content");if(j.removeClass(h),j.siblings("label").removeClass("tsf-no-focus-ring"),d.addClass(h),c){let b=a("."+f+"-content");b.removeClass(g).hide(),l.addClass(g).show(),a("#"+e).trigger("tsf-tab-toggled")}else if(l.length&&!l.is(i)){let b=a("."+f+"-content");b.fadeOut(150,function(){a(this).removeClass(g)}),setTimeout(()=>{l.addClass(g).fadeIn(250)},150),setTimeout(()=>{a("#"+e).trigger("tsf-tab-toggled")},175)}});a(".tsf-nav-tab-wrapper").on("click.tsfNavTab",".tsf-nav-tab",a=>{a.currentTarget.classList.add("tsf-no-focus-ring")});a(document.body).on("tsf-ready",()=>{a(".tsf-tabs-radio:checked").each((b,c)=>{a(c).trigger("change",[!0])})})};return Object.assign({load:()=>{a("div.updated, div.error, div.notice, .notice-error, .notice-warning").insertAfter(".tsf-top-wrap"),a(document.body).on("tsf-onload",k),a(document.body).on("tsf-ready",l),a(".tsf-js-confirm-reset").on("click",m),n()}},{},{l10n:b})}(jQuery),jQuery(window.tsfSettings.load);
|
1 |
+
'use strict';window.tsfSettings=function(a){const b="undefined"!=typeof tsfSettingsL10n&&tsfSettingsL10n,c=()=>{const b=b=>{a(b.target).is(":checked")?(a(".tsf-pixel-counter-wrap").show(),tsfC.triggerCounterUpdate()):a(".tsf-pixel-counter-wrap").hide()};a("#autodescription-site-settings\\[display_character_counter\\]").on("click",b),a("#autodescription-site-settings\\[display_pixel_counter\\]").on("click",b)},d=()=>{let b=a(".tsf-color-picker");b.length&&a.each(b,(b,c)=>{let d=a(c),e="",f=d.data("tsf-default-color");d.wpColorPicker({defaultColor:f,width:238,change:()=>{e=d.wpColorPicker("color"),""===e&&(e=f),d.val(e),tsfAys.registerChange()},clear:()=>{f.length&&(d.val(f),d.closest(".wp-picker-container").find(".wp-color-result").css("backgroundColor",f)),tsfAys.registerChange()},palettes:!1})})},e=()=>{let b=document.getElementById("#autodescription-site-settings[title_rem_additions]");a(b).on("change",()=>{let c=a(".tsf-title-additions-js");a(b).is(":checked")?c.css("display","none"):c.css("display","inline")}),a(b).trigger("change");a("#tsf-title-location input").on("click",b=>{let c=a(".tsf-title-additions-example-left"),d=a(".tsf-title-additions-example-right");"right"===a(b.target).val()?(c.css("display","none"),d.css("display","inline")):(c.css("display","inline"),d.css("display","none"))});a("#tsf-title-prefixes-toggle :input").on("click",b=>{let c=a(b.target),d=a(".tsf-title-prefix-example");c.is(":checked")?d.css("display","none"):d.css("display","inline")});a("#tsf-title-separator :input").on("click",b=>{let c=b.target.value,d="";switch(c){case"pipe":d="|";break;default:d=a("<div/>").html("&"+c+";").text();}a(".tsf-sep-js").text(" "+d+" "),a(window).trigger("tsf-title-sep-updated",[d])})},f=()=>{const c=document.getElementById("autodescription-site-settings[homepage_title]"),d=document.getElementById("autodescription-site-settings[homepage_title_tagline]"),e=document.getElementById("autodescription-site-settings[homepage_tagline]"),f=tsf.escapeString(b.i18n.protectedTitle),g=tsf.escapeString(b.i18n.privateTitle);tsfTitle.setInputElement(c);const h=()=>{let b=tsfTitle.getState("additionPlacement"),c="after";tsf.l10n.states.isRTL?"right"===a("#tsf-home-title-location input:checked").val()&&(c="before"):"left"===a("#tsf-home-title-location input:checked").val()&&(c="before"),c!==b&&tsfTitle.updateState("additionPlacement",c)};h(),a("#tsf-home-title-location").on("click",":input",h);const i=a=>{let b=tsfTitle.getState("prefixValue"),c="";switch(a){case"password":c=f;break;case"private":c=g;break;default:case"public":c="";}c!==b&&tsfTitle.updateState("prefixValue",c)};b.states.isFrontPrivate?i("private"):b.states.isFrontProtected&&i("password");a(c).on("input.tsfInputTitle",b=>{let c=a(".tsf-custom-title-js"),d=tsf.decodeEntities(tsf.sDoubleSpace(b.target.value.trim()));d.length?c.html(tsf.escapeString(d)):c.html(tsf.escapeString(tsf.decodeEntities(tsfTitle.getState("defaultTitle"))))}),a(c).trigger("input.tsfInputTitle");let j,k=a(".tsf-custom-tagline-js");const l=()=>{clearTimeout(j),j=setTimeout(()=>{let b=tsfTitle.getState("additionValue");b=tsf.decodeEntities(tsf.sDoubleSpace(b.trim())),b.length&&tsfTitle.getState("useTagline")?(k.html(tsf.escapeString(b)),a(".tsf-custom-blogname-js").show()):a(".tsf-custom-blogname-js").hide()})};a(d).on("input.tsfInputTagline",()=>{let a=tsfTitle.getState("additionValue"),b=d.value.trim();b.length||(b=d.placeholder||""),b=tsf.escapeString(tsf.decodeEntities(b.trim())),a!==b&&(tsfTitle.updateState("additionValue",b),l())}),a(d).trigger("input.tsfInputTagline");a(e).on("change.tsfToggleTagline",a=>{let b=!1;a.target.checked?(b=!0,d.readOnly=!1):(b=!1,d.readOnly=!0),tsfTitle.updateState("useTagline",b),l()}),a(e).trigger("change.tsfToggleTagline");a(window).on("tsf-title-sep-updated",(a,b)=>{tsfTitle.updateState("separator",b)}),tsfTitle.enqueueUnregisteredInputTrigger()},g=()=>{tsfDescription.setInputElement(document.getElementById("autodescription-site-settings[homepage_description]")),tsfDescription.enqueueUnregisteredInputTrigger()},h=()=>{const b=()=>{tsfTitle.enqueueUnregisteredInputTrigger(),tsfDescription.enqueueUnregisteredInputTrigger()};a(document).on("postbox-toggled",function(a,c){if("autodescription-homepage-settings"===c.id){let a=c.querySelector(".inside");0<a.offsetHeight&&0<a.offsetWidth&&b()}}),a("#tsf-homepage-tab-general").on("tsf-tab-toggled",tsfTitle.enqueueUnregisteredInputTrigger)},i=()=>{const b=a("#autodescription-site-settings\\[set_copyright_directives\\]"),c=a("#autodescription-site-settings\\[max_snippet_length\\], #autodescription-site-settings\\[max_image_preview\\], #autodescription-site-settings\\[max_video_preview\\]");if(b.length&&c.length){b.on("change.tsfToggleDirectives",b=>{b.target.checked?(c.prop("disabled",!1),a(".tsf-toggle-directives-surrogate").remove()):(c.prop("disabled",!0),c.each((b,c)=>{a("<input />").attr("type","hidden").attr("name",c.name||"").val(c.value||0).addClass("tsf-toggle-directives-surrogate").insertAfter(c)}))}),b.trigger("change.tsfToggleDirectives")}},j=()=>{const b=a("#autodescription-site-settings\\[google_verification\\], #autodescription-site-settings\\[bing_verification\\], #autodescription-site-settings\\[yandex_verification\\], #autodescription-site-settings\\[pint_verification\\]");if(b.length){const a=a=>{let b=a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData("text")||void 0;if(b){let c=/<meta[^>]+content=(\"|\')?([^\"\'>\s]+)\1?.*?>/i.exec(b);c&&2 in c&&"string"==typeof c[2]&&c[2].length&&(a.stopPropagation(),a.preventDefault(),a.target.value=c[2],tsfAys.registerChange())}};b.on("paste",a)}},k=()=>{c(),e(),f(),g(),h(),i(),j(),d()},l=()=>{tsfSocial.initTitleInputs({ref:document.getElementById("tsf-title-reference"),meta:document.getElementById("autodescription-site-settings[homepage_title]"),og:document.getElementById("autodescription-site-settings[homepage_og_title]"),tw:document.getElementById("autodescription-site-settings[homepage_twitter_title]")}),tsfSocial.initDescriptionInputs({ref:document.getElementById("tsf-description-reference"),meta:document.getElementById("autodescription-site-settings[homepage_description]"),og:document.getElementById("autodescription-site-settings[homepage_og_description]"),tw:document.getElementById("autodescription-site-settings[homepage_twitter_description]")})},m=()=>confirm(b.i18n.confirmReset),n=()=>{a(".tsf-tabs-radio").on("change",(b,c)=>{let d=a(b.target);if(!d.is(":checked"))return;c="boolean"==typeof c&&c;let e=b.target.id,f=b.target.name,g="tsf-active-tab-content",h="tsf-tab-active",i=a("."+g),j=d.closest(".tsf-nav-tab-wrapper").find("."+h),k=i.find("input:invalid, select:invalid, textarea:invalid");if(k.length)return k[0].reportValidity(),j.prop("checked",!0),d.prop("checked",!1),b.stopPropagation(),b.preventDefault(),!1;let l=a("#"+e+"-content");if(j.removeClass(h),j.siblings("label").removeClass("tsf-no-focus-ring"),d.addClass(h),c){let b=a("."+f+"-content");b.removeClass(g).hide(),l.addClass(g).show(),a("#"+e).trigger("tsf-tab-toggled")}else if(l.length&&!l.is(i)){let b=a("."+f+"-content");b.fadeOut(150,function(){a(this).removeClass(g)}),setTimeout(()=>{l.addClass(g).fadeIn(250)},150),setTimeout(()=>{a("#"+e).trigger("tsf-tab-toggled")},175)}});a(".tsf-nav-tab-wrapper").on("click.tsfNavTab",".tsf-nav-tab",a=>{a.currentTarget.classList.add("tsf-no-focus-ring")});a(document.body).on("tsf-ready",()=>{a(".tsf-tabs-radio:checked").each((b,c)=>{a(c).trigger("change",[!0])})})};return Object.assign({load:()=>{a("div.updated, div.error, div.notice, .notice-error, .notice-warning, .notice-info").insertAfter(".tsf-top-wrap"),a(document.body).on("tsf-onload",k),a(document.body).on("tsf-ready",l),a(".tsf-js-confirm-reset").on("click",m),n()}},{},{l10n:b})}(jQuery),jQuery(window.tsfSettings.load);
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== The SEO Framework ===
|
2 |
Contributors: Cybr
|
3 |
-
Tags:
|
4 |
Requires at least: 4.9.0
|
5 |
-
Tested up to: 5.
|
6 |
Requires PHP: 5.6.0
|
7 |
-
Stable tag: 4.0.
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
@@ -126,7 +126,7 @@ The SEO Framework works on many things without notifying you, because the best s
|
|
126 |
|
127 |
In a few words: The SEO Framework allows search engines to do what they've been doing for the past 20 years.
|
128 |
|
129 |
-
When you activate The SEO Framework on any site, you automatically grant rights to content aggregators, among which are Google, Bing, and Yandex, to obtain information from the site, including written work, images, audio, and video. You can control these rights via the robots-meta settings brought by this plugin. Your rights and the effectiveness of these settings are subject to the region and language of your website, and the physical or virtual origin of the platform and their potential users through which your website's information is obtained and shared. It is up to the aggregator to honor your rights and the requests brought via The SEO Framework.
|
130 |
|
131 |
If you wish to learn more, please refer to the website of the [EU commission on copyright](https://ec.europa.eu/digital-single-market/en/modernisation-eu-copyright-rules). These rulings may propagate its effects through regions outside the EU.
|
132 |
|
@@ -173,7 +173,7 @@ This plugin is all-inclusive. It's 100% freeware; not crippleware.
|
|
173 |
|
174 |
= Is there a premium version? =
|
175 |
|
176 |
-
No.
|
177 |
|
178 |
However, we do offer many free and paid extensions that help support this free plugin. We provide these via our free [Extension Manager plugin](https://theseoframework.com/?p=2760).
|
179 |
|
@@ -188,7 +188,7 @@ We'll try to get back to you within 72 hours. Typically, we reply within a day.
|
|
188 |
Any input is much appreciated, and everything will be considered.
|
189 |
Please visit the [GitHub project page](https://github.com/sybrew/the-seo-framework) to submit issues or even pull requests.
|
190 |
|
191 |
-
|
192 |
|
193 |
= What do the colors tell me? =
|
194 |
|
@@ -227,6 +227,14 @@ If you wish to display breadcrumbs, then your theme should provide this. Alterna
|
|
227 |
|
228 |
== Changelog ==
|
229 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
= 4.0.2 =
|
231 |
|
232 |
France recently amended its [copyright laws](https://www.legifrance.gouv.fr/eli/loi/2019/7/24/MICX1902858L/jo/texte). In short, in France, it's now forbidden for content aggregators to display excerpts and previews of your content when no consent is given.
|
1 |
=== The SEO Framework ===
|
2 |
Contributors: Cybr
|
3 |
+
Tags: seo, xml sitemap, google search, open graph, schema.org, twitter card, performance
|
4 |
Requires at least: 4.9.0
|
5 |
+
Tested up to: 5.3
|
6 |
Requires PHP: 5.6.0
|
7 |
+
Stable tag: 4.0.3
|
8 |
License: GPLv3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
126 |
|
127 |
In a few words: The SEO Framework allows search engines to do what they've been doing for the past 20 years.
|
128 |
|
129 |
+
When you activate The SEO Framework on any site, you automatically grant rights to content aggregators, among which are Google, Bing, and Yandex, to obtain and use information from the site, including written work, images, audio, and video. You can control these rights via the robots-meta settings brought by this plugin. Your rights and the effectiveness of these settings are subject to the region and language of your website, and the physical or virtual origin of the platform and their potential users through which your website's information is obtained and shared. It is up to the aggregator to honor your rights and the requests brought via The SEO Framework.
|
130 |
|
131 |
If you wish to learn more, please refer to the website of the [EU commission on copyright](https://ec.europa.eu/digital-single-market/en/modernisation-eu-copyright-rules). These rulings may propagate its effects through regions outside the EU.
|
132 |
|
173 |
|
174 |
= Is there a premium version? =
|
175 |
|
176 |
+
No. We treat this plugin as a premium plugin already.
|
177 |
|
178 |
However, we do offer many free and paid extensions that help support this free plugin. We provide these via our free [Extension Manager plugin](https://theseoframework.com/?p=2760).
|
179 |
|
188 |
Any input is much appreciated, and everything will be considered.
|
189 |
Please visit the [GitHub project page](https://github.com/sybrew/the-seo-framework) to submit issues or even pull requests.
|
190 |
|
191 |
+
Learn more [about contributing](https://tsf.fyi/contributing).
|
192 |
|
193 |
= What do the colors tell me? =
|
194 |
|
227 |
|
228 |
== Changelog ==
|
229 |
|
230 |
+
= 4.0.3 =
|
231 |
+
|
232 |
+
Google Search has a new bug in their parser, which causes pages to be deindexed unintentionally when a specific combination of robots-settings are used. To work around this bug, we changed how the recently introduced copyright directive settings work.
|
233 |
+
|
234 |
+
For more information, see our KB entry on why the [Maximum Image Preview Size setting may now be ignored](https://kb.theseoframework.com/?p=82).
|
235 |
+
|
236 |
+
We also fixed three bugs and added [minor improvements](https://theseoframework.com/?p=3379#detailed).
|
237 |
+
|
238 |
= 4.0.2 =
|
239 |
|
240 |
France recently amended its [copyright laws](https://www.legifrance.gouv.fr/eli/loi/2019/7/24/MICX1902858L/jo/texte). In short, in France, it's now forbidden for content aggregators to display excerpts and previews of your content when no consent is given.
|