The SEO Framework - Version 4.0.6

Version Description

In this update, we addressed a few issues our amazing users helped investigate. With that, we implemented better bbPress title support, and fixed a bug regarding WooCommerce and term-ID collisions.

We also increased the entropy for generating object caching keys, addressed some translation and RTL errors, and added a few new filters.

Download this release

Release Info

Developer Cybr
Plugin Icon 128x128 The SEO Framework
Version 4.0.6
Comparing to
See all releases

Code changes from version 4.0.5 to 4.0.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.5
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.5' );
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.6
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.6' );
68
69
/**
70
* The plugin Database version.
bootstrap/upgrade.php CHANGED
@@ -106,6 +106,7 @@ function _do_upgrade() {
106
}
107
108
// Check if upgrade is locked. Otherwise, lock it.
109
if ( \get_transient( 'tsf_upgrade_lock' ) ) return;
110
111
$timeout = 5 * MINUTE_IN_SECONDS;
@@ -240,6 +241,9 @@ function _prepare_upgrade_notice() {
240
* Outputs "your site has been upgraded" notification to applicable plugin users on upgrade.
241
*
242
* @since 3.0.6
243
*/
244
function _do_upgrade_notice() {
245
106
}
107
108
// Check if upgrade is locked. Otherwise, lock it.
109
+ // TODO send out an admin notice, that informs the user the upgrader is running in the background for X seconds?
110
if ( \get_transient( 'tsf_upgrade_lock' ) ) return;
111
112
$timeout = 5 * MINUTE_IN_SECONDS;
241
* Outputs "your site has been upgraded" notification to applicable plugin users on upgrade.
242
*
243
* @since 3.0.6
244
+ * @TODO Add browser cache flush notice? Or set a pragma/cache-control header?
245
+ * Users that remove query strings (thanks to YSlow) are to blame, though.
246
+ * @link <https://wordpress.org/support/topic/4-0-admin-interface-not-loading-correctly/>
247
*/
248
function _do_upgrade_notice() {
249
inc/classes/admin-init.class.php CHANGED
@@ -365,7 +365,7 @@ class Admin_Init extends Init {
365
* for alerts, etc.
366
*
367
* @since 2.2.2
368
- * @since 2.9.2 : Added user-friendly exception handling.
369
* @since 2.9.3 : 1. Query arguments work again (regression 2.9.2).
370
* 2. Now only accepts http and https protocols.
371
*
@@ -379,7 +379,9 @@ class Admin_Init extends Init {
379
if ( empty( $page ) )
380
return;
381
382
- $url = html_entity_decode( \menu_page_url( $page, false ) ); // This can be empty... TODO test?
383
384
foreach ( $query_args as $key => $value ) {
385
if ( empty( $key ) || empty( $value ) )
@@ -397,7 +399,7 @@ class Admin_Init extends Init {
397
* 1. Change 302 to 500 if you wish to test headers.
398
* 2. Also force handle_admin_redirect_error() to run.
399
*/
400
- \wp_safe_redirect( $target, 302 );
401
402
//* White screen of death for non-debugging users. Let's make it friendlier.
403
if ( $headers_sent ) {
365
* for alerts, etc.
366
*
367
* @since 2.2.2
368
+ * @since 2.9.2 Added user-friendly exception handling.
369
* @since 2.9.3 : 1. Query arguments work again (regression 2.9.2).
370
* 2. Now only accepts http and https protocols.
371
*
379
if ( empty( $page ) )
380
return;
381
382
+ // This can be empty... so $target will be empty. TODO test for $success and bail?
383
+ // Might cause security issues... we _must_ exit, always? Show warning?
384
+ $url = html_entity_decode( \menu_page_url( $page, false ) );
385
386
foreach ( $query_args as $key => $value ) {
387
if ( empty( $key ) || empty( $value ) )
399
* 1. Change 302 to 500 if you wish to test headers.
400
* 2. Also force handle_admin_redirect_error() to run.
401
*/
402
+ $success = \wp_safe_redirect( $target, 302 ); // phpcs:ignore, VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
403
404
//* White screen of death for non-debugging users. Let's make it friendlier.
405
if ( $headers_sent ) {
inc/classes/builders/scripts.class.php CHANGED
@@ -250,11 +250,8 @@ final class Scripts {
250
public static function forward_known_script( $id, $type ) {
251
if ( ! ( static::get_status_of( $id, $type ) & static::REGISTERED ) ) {
252
foreach ( static::$scripts as $s ) {
253
- if ( $s['id'] === $id ) {
254
- if ( $s['type'] === $type ) {
255
- static::forward_script( $s );
256
- }
257
- }
258
}
259
}
260
}
250
public static function forward_known_script( $id, $type ) {
251
if ( ! ( static::get_status_of( $id, $type ) & static::REGISTERED ) ) {
252
foreach ( static::$scripts as $s ) {
253
+ if ( $s['id'] === $id && $s['type'] === $type )
254
+ static::forward_script( $s );
255
}
256
}
257
}
inc/classes/builders/seobar-page.class.php CHANGED
@@ -199,7 +199,7 @@ final class SeoBar_Page extends SeoBar {
199
];
200
201
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
202
- // This way, we can implement AJAX SEO bar items...
203
$title_part = static::$tsf->get_filtered_raw_custom_field_title( $title_args, false );
204
205
if ( strlen( $title_part ) ) {
@@ -421,7 +421,7 @@ final class SeoBar_Page extends SeoBar {
421
];
422
423
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
424
- // This way, we can implement AJAX SEO bar items...
425
$desc = static::$tsf->get_description_from_custom_field( $desc_args, false );
426
427
if ( strlen( $desc ) ) {
199
];
200
201
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
202
+ // This way, we can implement real-time live-edit AJAX SEO bar items...
203
$title_part = static::$tsf->get_filtered_raw_custom_field_title( $title_args, false );
204
205
if ( strlen( $title_part ) ) {
421
];
422
423
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
424
+ // This way, we can implement real-time live-edit AJAX SEO bar items...
425
$desc = static::$tsf->get_description_from_custom_field( $desc_args, false );
426
427
if ( strlen( $desc ) ) {
inc/classes/builders/seobar-term.class.php CHANGED
@@ -215,7 +215,7 @@ final class SeoBar_Term extends SeoBar {
215
];
216
217
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
218
- // This way, we can implement AJAX SEO bar items...
219
$title_part = static::$tsf->get_filtered_raw_custom_field_title( $title_args, false );
220
221
if ( strlen( $title_part ) ) {
@@ -410,7 +410,7 @@ final class SeoBar_Term extends SeoBar {
410
];
411
412
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
413
- // This way, we can implement AJAX SEO bar items...
414
$desc = static::$tsf->get_description_from_custom_field( $desc_args, false );
415
416
if ( strlen( $desc ) ) {
215
];
216
217
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
218
+ // This way, we can implement real-time live-edit AJAX SEO bar items...
219
$title_part = static::$tsf->get_filtered_raw_custom_field_title( $title_args, false );
220
221
if ( strlen( $title_part ) ) {
410
];
411
412
// TODO instead of getting values from the options API, why don't we store the parameters and allow them to be modified?
413
+ // This way, we can implement real-time live-edit AJAX SEO bar items...
414
$desc = static::$tsf->get_description_from_custom_field( $desc_args, false );
415
416
if ( strlen( $desc ) ) {
inc/classes/builders/seobar.class.php CHANGED
@@ -36,7 +36,7 @@ defined( 'THE_SEO_FRAMEWORK_PRESENT' ) or die;
36
* @access private
37
* Use \The_SEO_Framework\Interpreters\SeoBar::generate_bar() instead.
38
* @internal
39
- * @abstract: Implements test_{$*}, see property $tests and method `_run_test()` for what * may be.
40
* @see \The_SEO_Framework\Interpreters\SeoBar
41
*/
42
abstract class SeoBar {
36
* @access private
37
* Use \The_SEO_Framework\Interpreters\SeoBar::generate_bar() instead.
38
* @internal
39
+ * @abstract Implements test_{$*}, see property $tests and method `_run_test()` for what * may be.
40
* @see \The_SEO_Framework\Interpreters\SeoBar
41
*/
42
abstract class SeoBar {
inc/classes/cache.class.php CHANGED
@@ -600,9 +600,8 @@ class Cache extends Site_Options {
600
break;
601
endswitch;
602
} elseif ( $this->is_search() ) {
603
- //* Remove spaces. Limit to 10 chars.
604
- // TODO use metahpone?
605
- $query = \esc_sql( substr( str_replace( ' ', '', \get_search_query( true ) ), 0, 10 ) );
606
607
//* Temporarily disable caches to prevent database spam.
608
$this->the_seo_framework_use_transients = false;
@@ -708,6 +707,7 @@ class Cache extends Site_Options {
708
* Generates Cache key for taxonomical archives.
709
*
710
* @since 2.6.0
711
*
712
* @param int $page_id The taxonomy or page ID.
713
* @param string $taxonomy The taxonomy name.
@@ -721,8 +721,8 @@ class Cache extends Site_Options {
721
$taxonomy_name = explode( '_', $taxonomy );
722
if ( is_array( $taxonomy_name ) ) {
723
foreach ( $taxonomy_name as $name ) {
724
- if ( mb_strlen( $name ) >= 3 ) {
725
- $the_id .= mb_substr( $name, 0, 3 ) . '_';
726
} else {
727
$the_id = $name . '_';
728
}
@@ -731,14 +731,14 @@ class Cache extends Site_Options {
731
}
732
733
if ( ! $the_id ) {
734
- if ( mb_strlen( $taxonomy ) >= 5 ) {
735
- $the_id = mb_substr( $taxonomy, 0, 5 );
736
} else {
737
- $the_id = \esc_sql( $taxonomy );
738
}
739
}
740
741
- $the_id = strtolower( $the_id );
742
743
//* Put it all together.
744
return rtrim( $the_id, '_' ) . '_' . $page_id;
600
break;
601
endswitch;
602
} elseif ( $this->is_search() ) {
603
+ //* Remove spaces, jumble with md5, Limit to 12 chars.
604
+ $query = \esc_sql( substr( md5( str_replace( ' ', '', \get_search_query( true ) ) ), 0, 12 ) );
605
606
//* Temporarily disable caches to prevent database spam.
607
$this->the_seo_framework_use_transients = false;
707
* Generates Cache key for taxonomical archives.
708
*
709
* @since 2.6.0
710
+ * @since 4.0.6 No longer uses mb encoding functions, speeding up this method.
711
*
712
* @param int $page_id The taxonomy or page ID.
713
* @param string $taxonomy The taxonomy name.
721
$taxonomy_name = explode( '_', $taxonomy );
722
if ( is_array( $taxonomy_name ) ) {
723
foreach ( $taxonomy_name as $name ) {
724
+ if ( strlen( $name ) >= 3 ) {
725
+ $the_id .= substr( $name, 0, 3 ) . '_';
726
} else {
727
$the_id = $name . '_';
728
}
731
}
732
733
if ( ! $the_id ) {
734
+ if ( strlen( $taxonomy ) >= 6 ) {
735
+ $the_id = substr( $taxonomy, 0, 6 );
736
} else {
737
+ $the_id = $taxonomy;
738
}
739
}
740
741
+ $the_id = strtolower( \esc_sql( $the_id ) );
742
743
//* Put it all together.
744
return rtrim( $the_id, '_' ) . '_' . $page_id;
inc/classes/core.class.php CHANGED
@@ -221,16 +221,16 @@ class Core {
221
);
222
}
223
224
- $tsf_links['about'] = sprintf(
225
- '<a href="%s" rel="noreferrer noopener" target="_blank">%s</a>',
226
- 'https://theseoframework.com/about-us/',
227
- \esc_html_x( 'About', 'About us', 'autodescription' )
228
- );
229
$tsf_links['tsfem'] = sprintf(
230
'<a href="%s" rel="noreferrer noopener" target="_blank">%s</a>',
231
'https://theseoframework.com/extensions/',
232
\esc_html_x( 'Extensions', 'Plugin extensions', 'autodescription' )
233
);
234
235
return array_merge( $tsf_links, $links );
236
}
@@ -794,11 +794,10 @@ class Core {
794
*/
795
public function convert_markdown( $text, $convert = [], $args = [] ) {
796
797
- preprocess : {
798
- $text = str_replace( "\r\n", "\n", $text );
799
- $text = str_replace( "\t", ' ', $text );
800
- $text = trim( $text );
801
- }
802
803
// You need 3 chars to make a markdown: *m*
804
if ( strlen( $text ) < 3 )
@@ -880,9 +879,11 @@ class Core {
880
case 'h3':
881
case 'h2':
882
case 'h1':
883
- $amount = filter_var( $type, FILTER_SANITIZE_NUMBER_INT );
884
//* Considers word non-boundary. @TODO consider removing this?
885
- $expression = sprintf( '/(?:\={%1$s})\B([^\={\%1$s}]+)\B(?:\={%1$s})/', $amount );
886
887
$count = preg_match_all( $expression, $text, $matches, PREG_PATTERN_ORDER );
888
221
);
222
}
223
224
$tsf_links['tsfem'] = sprintf(
225
'<a href="%s" rel="noreferrer noopener" target="_blank">%s</a>',
226
'https://theseoframework.com/extensions/',
227
\esc_html_x( 'Extensions', 'Plugin extensions', 'autodescription' )
228
);
229
+ $tsf_links['pricing'] = sprintf(
230
+ '<a href="%s" rel="noreferrer noopener" target="_blank">%s</a>',
231
+ 'https://theseoframework.com/pricing/',
232
+ \esc_html_x( 'Pricing', 'Plugin pricing', 'autodescription' )
233
+ );
234
235
return array_merge( $tsf_links, $links );
236
}
794
*/
795
public function convert_markdown( $text, $convert = [], $args = [] ) {
796
797
+ // preprocess
798
+ $text = str_replace( "\r\n", "\n", $text );
799
+ $text = str_replace( "\t", ' ', $text );
800
+ $text = trim( $text );
801
802
// You need 3 chars to make a markdown: *m*
803
if ( strlen( $text ) < 3 )
879
case 'h3':
880
case 'h2':
881
case 'h1':
882
//* Considers word non-boundary. @TODO consider removing this?
883
+ $expression = sprintf(
884
+ '/(?:\={%1$d})\B([^\={\%1$s}]+)\B(?:\={%1$d})/',
885
+ filter_var( $type, FILTER_SANITIZE_NUMBER_INT )
886
+ );
887
888
$count = preg_match_all( $expression, $text, $matches, PREG_PATTERN_ORDER );
889
inc/classes/debug.class.php CHANGED
@@ -233,7 +233,6 @@ final class Debug {
233
* @since 2.8.0 1. Now escapes all parameters.
234
* 2. Removed check for gettext.
235
* @access private
236
- * @todo Escape translation string.
237
*
238
* @param string $p_or_m The Property or Method.
239
* @param string $message A message explaining what has been done incorrectly.
@@ -583,6 +582,7 @@ final class Debug {
583
*
584
* @since 2.6.6
585
* @since 4.0.0 Cleaned up global callers; only use TSF methods.
586
*
587
* @param string $cache_version 'yup' or 'nope'
588
* @return string Wrapped Query State debug output.
@@ -638,10 +638,13 @@ final class Debug {
638
$is_singular_archive = $tsf->is_singular_archive();
639
$is_term_meta_capable = $tsf->is_term_meta_capable();
640
$is_post_type_supported = $tsf->is_post_type_supported();
641
$get_post_type = \get_post_type();
642
$get_post_type_real_ID = $tsf->get_post_type_real_ID();
643
$admin_post_type = $tsf->get_admin_post_type();
644
$current_taxonomy = $tsf->get_current_taxonomy();
645
$is_post_type_archive = \is_post_type_archive();
646
$is_protected = $tsf->is_protected( $page_id );
647
// phpcs:enable, WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase -- Not this file's issue.
233
* @since 2.8.0 1. Now escapes all parameters.
234
* 2. Removed check for gettext.
235
* @access private
236
*
237
* @param string $p_or_m The Property or Method.
238
* @param string $message A message explaining what has been done incorrectly.
582
*
583
* @since 2.6.6
584
* @since 4.0.0 Cleaned up global callers; only use TSF methods.
585
+ * @since 4.1.0 Added more debugging variables added since 4.0.0.
586
*
587
* @param string $cache_version 'yup' or 'nope'
588
* @return string Wrapped Query State debug output.
638
$is_singular_archive = $tsf->is_singular_archive();
639
$is_term_meta_capable = $tsf->is_term_meta_capable();
640
$is_post_type_supported = $tsf->is_post_type_supported();
641
+ $is_taxonomy_supported = $tsf->is_taxonomy_supported();
642
$get_post_type = \get_post_type();
643
$get_post_type_real_ID = $tsf->get_post_type_real_ID();
644
$admin_post_type = $tsf->get_admin_post_type();
645
$current_taxonomy = $tsf->get_current_taxonomy();
646
+ $is_taxonomy_disabled = $tsf->is_taxonomy_disabled();
647
+ $is_taxonomy_public = $tsf->is_taxonomy_public();
648
$is_post_type_archive = \is_post_type_archive();
649
$is_protected = $tsf->is_protected( $page_id );
650
// phpcs:enable, WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase -- Not this file's issue.
inc/classes/deprecated.class.php CHANGED
@@ -153,7 +153,7 @@ final class Deprecated {
153
public function get_seo_bar( $column, $post_id, $tax_id ) {
154
155
$tsf = \the_seo_framework();
156
- $tsf->_deprecated_function( 'the_seo_framework()->post_status()', '4.0.0', 'the_seo_framework()->get_generated_seo_bar()' );
157
158
$type = \get_post_type( $post_id );
159
@@ -553,8 +553,7 @@ final class Deprecated {
553
* Returns image URL suitable for Schema items.
554
*
555
* These are images that are strictly assigned to the Post or Page, fallbacks are omitted.
556
- * Themes should compliment these. If not, then Open Graph should at least
557
- * compliment these.
558
* If that's not even true, then I don't know what happens. But then you're
559
* in a grey area... @TODO make images optional for Schema?
560
*
153
public function get_seo_bar( $column, $post_id, $tax_id ) {
154
155
$tsf = \the_seo_framework();
156
+ $tsf->_deprecated_function( 'the_seo_framework()->get_seo_bar()', '4.0.0', 'the_seo_framework()->get_generated_seo_bar()' );
157
158
$type = \get_post_type( $post_id );
159
553
* Returns image URL suitable for Schema items.
554
*
555
* These are images that are strictly assigned to the Post or Page, fallbacks are omitted.
556
+ * Themes should complement these. If not, then Open Graph should at least complement these.
557
* If that's not even true, then I don't know what happens. But then you're
558
* in a grey area... @TODO make images optional for Schema?
559
*
inc/classes/detect.class.php CHANGED
@@ -143,6 +143,7 @@ class Detect extends Render {
143
* @since 1.3.0
144
* @since 2.8.0 : 1. Can now check for globals.
145
* 2. Switched detection order from FAST to SLOW.
146
*
147
* @param array $plugins Array of array for constants, classes and / or functions to check for plugin existence.
148
* @return boolean True if plugin exists or false if plugin constant, class or function not detected.
@@ -178,7 +179,7 @@ class Detect extends Render {
178
//* Check for classes
179
if ( isset( $plugins['classes'] ) ) {
180
foreach ( $plugins['classes'] as $name ) {
181
- if ( class_exists( $name ) ) {
182
return true;
183
}
184
}
@@ -239,16 +240,29 @@ class Detect extends Render {
239
* All parameters must match and return true.
240
*
241
* @since 2.5.2
242
*
243
* @param array $plugins Array of array for constants, classes and / or functions to check for plugin existence.
244
* @return bool True if ALL functions classes and constants exists or false if plugin constant, class or function not detected.
245
*/
246
public function detect_plugin_multi( array $plugins ) {
247
248
- //* Check for classes
249
- if ( isset( $plugins['classes'] ) ) {
250
- foreach ( $plugins['classes'] as $name ) {
251
- if ( ! class_exists( $name ) ) {
252
return false;
253
}
254
}
@@ -263,10 +277,10 @@ class Detect extends Render {
263
}
264
}
265
266
- //* Check for constants
267
- if ( isset( $plugins['constants'] ) ) {
268
- foreach ( $plugins['constants'] as $name ) {
269
- if ( ! defined( $name ) ) {
270
return false;
271
}
272
}
@@ -532,8 +546,8 @@ class Detect extends Render {
532
* - Beaver Builder by Fastline Media
533
*
534
* @since 4.0.0
535
* @staticvar bool $detected
536
- * @TODO add filter?
537
*
538
* @return bool
539
*/
@@ -541,15 +555,26 @@ class Detect extends Render {
541
542
static $detected = null;
543
544
- return isset( $detected ) ? $detected : $detected = $this->detect_plugin( [
545
- 'constants' => [
546
- 'ELEMENTOR_VERSION',
547
- 'ET_BUILDER_VERSION',
548
- 'WPB_VC_VERSION',
549
- 'SITEORIGIN_PANELS_VERSION',
550
- 'FL_BUILDER_VERSION',
551
- ],
552
- ] );
553
}
554
555
/**
143
* @since 1.3.0
144
* @since 2.8.0 : 1. Can now check for globals.
145
* 2. Switched detection order from FAST to SLOW.
146
+ * @since 4.0.6 Can no longer autoload classes.
147
*
148
* @param array $plugins Array of array for constants, classes and / or functions to check for plugin existence.
149
* @return boolean True if plugin exists or false if plugin constant, class or function not detected.
179
//* Check for classes
180
if ( isset( $plugins['classes'] ) ) {
181
foreach ( $plugins['classes'] as $name ) {
182
+ if ( class_exists( $name, false ) ) {
183
return true;
184
}
185
}
240
* All parameters must match and return true.
241
*
242
* @since 2.5.2
243
+ * @since 4.0.6 : 1. Can now check for globals.
244
+ * 2. Switched detection order from FAST to SLOW.
245
+ * 3. Can no longer autoload classes.
246
+ * This method is only used by can_i_use(), and is only effective in the Ultimate Member compat file...
247
*
248
* @param array $plugins Array of array for constants, classes and / or functions to check for plugin existence.
249
* @return bool True if ALL functions classes and constants exists or false if plugin constant, class or function not detected.
250
*/
251
public function detect_plugin_multi( array $plugins ) {
252
253
+ //* Check for globals
254
+ if ( isset( $plugins['globals'] ) ) {
255
+ foreach ( $plugins['globals'] as $name ) {
256
+ if ( ! isset( $GLOBALS[ $name ] ) ) {
257
+ return false;
258
+ }
259
+ }
260
+ }
261
+
262
+ //* Check for constants
263
+ if ( isset( $plugins['constants'] ) ) {
264
+ foreach ( $plugins['constants'] as $name ) {
265
+ if ( ! defined( $name ) ) {
266
return false;
267
}
268
}
277
}
278
}
279
280
+ //* Check for classes
281
+ if ( isset( $plugins['classes'] ) ) {
282
+ foreach ( $plugins['classes'] as $name ) {
283
+ if ( ! class_exists( $name, false ) ) {
284
return false;
285
}
286
}
546
* - Beaver Builder by Fastline Media
547
*
548
* @since 4.0.0
549
+ * @since 4.0.6 The output is now filterable.
550
* @staticvar bool $detected
551
*
552
* @return bool
553
*/
555
556
static $detected = null;
557
558
+ if ( isset( $detected ) ) return $detected;
559
+
560
+ /**
561
+ * @since 4.0.6
562
+ * @param bool $detected Whether an active page builder is detected.
563
+ * @NOTE not to be confused with `the_seo_framework_detect_page_builder`, which tests
564
+ * the page builder status for each post individually.
565
+ */
566
+ return $detected = (bool) \apply_filters(
567
+ 'the_seo_framework_page_builder_active',
568
+ $this->detect_plugin( [
569
+ 'constants' => [
570
+ 'ELEMENTOR_VERSION',
571
+ 'ET_BUILDER_VERSION',
572
+ 'WPB_VC_VERSION',
573
+ 'SITEORIGIN_PANELS_VERSION',
574
+ 'FL_BUILDER_VERSION',
575
+ ],
576
+ ] )
577
+ );
578
}
579
580
/**
inc/classes/generate-description.class.php CHANGED
@@ -390,6 +390,12 @@ class Generate_Description extends Generate {
390
$desc = $this->get_post_meta_item( '_genesis_description' ) ?: '';
391
} elseif ( $this->is_term_meta_capable() ) {
392
$desc = $this->get_term_meta_item( 'description' ) ?: '';
393
}
394
// phpcs:enable, WordPress.WhiteSpace.PrecisionAlignment
395
@@ -624,10 +630,10 @@ class Generate_Description extends Generate {
624
return '';
625
626
if ( is_null( $term ) ) {
627
- $_query = true;
628
- $term = \get_queried_object();
629
} else {
630
- $_query = false;
631
}
632
633
/**
@@ -642,9 +648,7 @@ class Generate_Description extends Generate {
642
643
$excerpt = '';
644
645
- if ( ! $_query ) {
646
- $excerpt = ! empty( $term->description ) ? $this->s_description_raw( $term->description ) : '';
647
- } else {
648
if ( $this->is_category() || $this->is_tag() || $this->is_tax() ) {
649
// WordPress DOES NOT allow HTML in term descriptions, not even if you're a super-administrator.
650
// See https://wpvulndb.com/vulnerabilities/9445. We won't parse HTMl tags unless WordPress adds native support.
@@ -652,11 +656,23 @@ class Generate_Description extends Generate {
652
} elseif ( $this->is_author() ) {
653
$excerpt = $this->s_excerpt_raw( \get_the_author_meta( 'description', (int) \get_query_var( 'author' ) ) );
654
} elseif ( \is_post_type_archive() ) {
655
- // TODO
656
- $excerpt = '';
657
} else {
658
- $excerpt = '';
659
}
660
}
661
662
return $excerpt;
390
$desc = $this->get_post_meta_item( '_genesis_description' ) ?: '';
391
} elseif ( $this->is_term_meta_capable() ) {
392
$desc = $this->get_term_meta_item( 'description' ) ?: '';
393
+ } elseif ( \is_post_type_archive() ) {
394
+ /**
395
+ * @since 4.0.6
396
+ * @param string $desc The post type archive description.
397
+ */
398
+ $desc = (string) \apply_filters( 'the_seo_framework_pta_description', '' );
399
}
400
// phpcs:enable, WordPress.WhiteSpace.PrecisionAlignment
401
630
return '';
631
632
if ( is_null( $term ) ) {
633
+ $in_the_loop = true;
634
+ $term = \get_queried_object();
635
} else {
636
+ $in_the_loop = false;
637
}
638
639
/**
648
649
$excerpt = '';
650
651
+ if ( $in_the_loop ) {
652
if ( $this->is_category() || $this->is_tag() || $this->is_tax() ) {
653
// WordPress DOES NOT allow HTML in term descriptions, not even if you're a super-administrator.
654
// See https://wpvulndb.com/vulnerabilities/9445. We won't parse HTMl tags unless WordPress adds native support.
656
} elseif ( $this->is_author() ) {
657
$excerpt = $this->s_excerpt_raw( \get_the_author_meta( 'description', (int) \get_query_var( 'author' ) ) );
658
} elseif ( \is_post_type_archive() ) {
659
+ /**
660
+ * @TODO can we even obtain anything useful ourselves?
661
+ *
662
+ * @since 4.0.6
663
+ * @param string $excerpt The archive description excerpt.
664
+ * @param mixed $term The queried object.
665
+ */
666
+ $excerpt = (string) \apply_filters( 'the_seo_framework_pta_description_excerpt', '', $term );
667
} else {
668
+ /**
669
+ * @since 4.0.6
670
+ * @param string $excerpt The fallback archive description excerpt.
671
+ */
672
+ $excerpt = (string) \apply_filters( 'the_seo_framework_fallback_archive_description_excerpt', '' );
673
}
674
+ } else {
675
+ $excerpt = ! empty( $term->description ) ? $this->s_description_raw( $term->description ) : '';
676
}
677
678
return $excerpt;
inc/classes/generate-image.class.php CHANGED
@@ -310,7 +310,7 @@ class Generate_Image extends Generate_Url {
310
* boolean multi: Whether multiple images may be returned,
311
* array cbs: An array of image generation callbacks, in order of most important to least.
312
* When 'multi' (or $single input) parameter is "false", it will use the first found.
313
- * array fallback: An array of image generaiton callbacks, in order of most important to least,
314
* Only one image is obtained from the fallback, and only if the regular cbs don't
315
* return any image.
316
* }
@@ -417,7 +417,6 @@ class Generate_Image extends Generate_Url {
417
$params = $this->get_image_generation_params( $args, $context );
418
$single = $single || ! $params['multi'];
419
420
- // TODO s_image_details() here? The cbs may be discarded, and then we won't obtain any fallbacks...
421
$details = $this->process_image_cbs( $params['cbs'], $args, $params['size'], $single )
422
?: $this->process_image_cbs( $params['fallback'], $args, $params['size'], true );
423
310
* boolean multi: Whether multiple images may be returned,
311
* array cbs: An array of image generation callbacks, in order of most important to least.
312
* When 'multi' (or $single input) parameter is "false", it will use the first found.
313
+ * array fallback: An array of image generation callbacks, in order of most important to least,
314
* Only one image is obtained from the fallback, and only if the regular cbs don't
315
* return any image.
316
* }
417
$params = $this->get_image_generation_params( $args, $context );
418
$single = $single || ! $params['multi'];
419
420
$details = $this->process_image_cbs( $params['cbs'], $args, $params['size'], $single )
421
?: $this->process_image_cbs( $params['fallback'], $args, $params['size'], true );
422
inc/classes/generate-title.class.php CHANGED
@@ -512,6 +512,12 @@ class Generate_Title extends Generate_Description {
512
$title = $this->get_post_meta_item( '_genesis_title' ) ?: '';
513
} elseif ( $this->is_term_meta_capable() ) {
514
$title = $this->get_term_meta_item( 'doctitle' ) ?: '';
515
}
516
// phpcs:enable, WordPress.WhiteSpace.PrecisionAlignment
517
512
$title = $this->get_post_meta_item( '_genesis_title' ) ?: '';
513
} elseif ( $this->is_term_meta_capable() ) {
514
$title = $this->get_term_meta_item( 'doctitle' ) ?: '';
515
+ } elseif ( \is_post_type_archive() ) {
516
+ /**
517
+ * @since 4.0.6
518
+ * @param string $title The post type archive title.
519
+ */
520
+ $title = (string) \apply_filters( 'the_seo_framework_pta_title', '' );
521
}
522
// phpcs:enable, WordPress.WhiteSpace.PrecisionAlignment
523
inc/classes/interpreters/seobar.class.php CHANGED
@@ -29,7 +29,7 @@ defined( 'THE_SEO_FRAMEWORK_PRESENT' ) or die;
29
* Interprets the SEO Bar into an HTML item.
30
*
31
* @since 4.0.0
32
- * TODO @see \the_seo_framework()->get_new_seo_bar( $args ) for easy access. (name tbd)
33
*
34
* @access public
35
* Note that you can't instance this class. Only static methods and properties are accessible.
29
* Interprets the SEO Bar into an HTML item.
30
*
31
* @since 4.0.0
32
+ * @see \the_seo_framework()->get_generated_seo_bar( $args ) for easy access.
33
*
34
* @access public
35
* Note that you can't instance this class. Only static methods and properties are accessible.
inc/classes/post-data.class.php CHANGED
@@ -162,7 +162,7 @@ class Post_Data extends Detect {
162
* @param \WP_Post $post Post object.
163
*/
164
return (array) \apply_filters_ref_array(
165
- 'the_seo_framework_inpost_seo_save_defaults', // TODO rename to the_seo_framework_post_meta_defaults
166
[
167
$this->get_unfiltered_post_meta_defaults(),
168
$post_id,
@@ -576,9 +576,7 @@ class Post_Data extends Detect {
576
* Fetches Post content.
577
*
578
* @since 2.6.0
579
- * @since 3.1.0 1. No longer applies WordPress' default filters.
580
- * 2. No longer used internally.
581
- * @todo deprecate, unused.
582
*
583
* @param int $id The post ID.
584
* @return string The post content.
162
* @param \WP_Post $post Post object.
163
*/
164
return (array) \apply_filters_ref_array(
165
+ 'the_seo_framework_inpost_seo_save_defaults', // TODO rename to the_seo_framework_post_meta_defaults. 4.1.0?
166
[
167
$this->get_unfiltered_post_meta_defaults(),
168
$post_id,
576
* Fetches Post content.
577
*
578
* @since 2.6.0
579
+ * @since 3.1.0 No longer applies WordPress' default filters.
580
*
581
* @param int $id The post ID.
582
* @return string The post content.
inc/classes/query.class.php CHANGED
@@ -369,6 +369,7 @@ class Query extends Core {
369
* @since 4.0.5 1. The output is now filterable.
370
* 2. Added caching.
371
* 3. Now has a first parameter `$post`.
372
*
373
* @param int|WP_Post|null $post (Optional) Post ID or post object.
374
* @return bool
@@ -379,6 +380,7 @@ class Query extends Core {
379
$post = \get_post( $post );
380
$id = $post ? $post->ID : 0;
381
} else {
382
$id = $this->get_the_real_ID();
383
}
384
369
* @since 4.0.5 1. The output is now filterable.
370
* 2. Added caching.
371
* 3. Now has a first parameter `$post`.
372
+ * @since 4.0.6 Added a short-circuit on current-requests for `is_singular()`.
373
*
374
* @param int|WP_Post|null $post (Optional) Post ID or post object.
375
* @return bool
380
$post = \get_post( $post );
381
$id = $post ? $post->ID : 0;
382
} else {
383
+ if ( ! \is_singular() ) return false;
384
$id = $this->get_the_real_ID();
385
}
386
inc/compat/plugin-bbpress.php CHANGED
@@ -15,6 +15,202 @@ defined( 'THE_SEO_FRAMEWORK_PRESENT' ) and $_this = \the_seo_framework_class() a
15
*/
16
\add_filter( 'bbp_title', [ $this, 'get_document_title' ], 99, 3 );
17
18
\add_filter( 'the_seo_framework_seo_column_keys_order', __NAMESPACE__ . '\\_bbpress_filter_order_keys' );
19
/**
20
* Filters the order keys for The SEO Bar.
15
*/
16
\add_filter( 'bbp_title', [ $this, 'get_document_title' ], 99, 3 );
17
18
+ \add_filter( 'the_seo_framework_title_from_generation', __NAMESPACE__ . '\\_bbpress_filter_title', 10, 2 );
19
+ /**
20
+ * Override's The SEO Framework's auto-generated title with bbPress's on bbPress queries.
21
+ *
22
+ * Still waiting for an API to get the proper title from bbPress (e.g. get raw 'Forum edit: %s'), instead of them formulating
23
+ * a complete title for us.
24
+ *
25
+ * We're going to trust Automattic/bbPress that they'll deprecate all functions called here, instead of removing them,
26
+ * might they desire to add/improve new functionality.
27
+ *
28
+ * @since 4.0.6
29
+ * @source bbp_title()
30
+ * @NOTE Do NOT call `bbp_title()` or apply filter `bbptitle` here, it'll cause an infinite loop.
31
+ *
32
+ * @param string $title The title.
33
+ * @param array|null $args The query arguments. Contains 'id' and 'taxonomy'.
34
+ * Is null when query is autodetermined.
35
+ * @return string The corrected bbPress title on bbPress pages.
36
+ */
37
+ function _bbpress_filter_title( $title, $args ) {
38
+
39
+ if ( null !== $args || ! \is_bbpress() ) return $title;
40
+
41
+ // phpcs:disable, Squiz.Commenting.BlockComment, Generic.WhiteSpace.ScopeIndent, WordPress.WP.I18n, Generic.Formatting.MultipleStatementAlignment -- Not my code.
42
+
43
+ // Title array
44
+ $new_title = [];
45
+
46
+ /** Archives **************************************************************/
47
+
48
+ // Forum Archive
49
+ if ( \bbp_is_forum_archive() ) {
50
+ $new_title['text'] = \bbp_get_forum_archive_title();
51
+
52
+ // Topic Archive
53
+ } elseif ( \bbp_is_topic_archive() ) {
54
+ $new_title['text'] = \bbp_get_topic_archive_title();
55
+
56
+ /** Edit ******************************************************************/
57
+
58
+ // Forum edit page
59
+ } elseif ( \bbp_is_forum_edit() ) {
60
+ $new_title['text'] = \bbp_get_forum_title();
61
+ $new_title['format'] = \esc_attr__( 'Forum Edit: %s', 'bbpress' );
62
+
63
+ // Topic edit page
64
+ } elseif ( \bbp_is_topic_edit() ) {
65
+ $new_title['text'] = \bbp_get_topic_title();
66
+ $new_title['format'] = \esc_attr__( 'Topic Edit: %s', 'bbpress' );
67
+
68
+ // Reply edit page
69
+ } elseif ( \bbp_is_reply_edit() ) {
70
+ $new_title['text'] = \bbp_get_reply_title();
71
+ $new_title['format'] = \esc_attr__( 'Reply Edit: %s', 'bbpress' );
72
+
73
+ // Topic tag edit page
74
+ } elseif ( \bbp_is_topic_tag_edit() ) {
75
+ $new_title['text'] = \bbp_get_topic_tag_name();
76
+ $new_title['format'] = \esc_attr__( 'Topic Tag Edit: %s', 'bbpress' );
77
+
78
+ /** Singles ***************************************************************/
79
+
80
+ // Forum page
81
+ } elseif ( \bbp_is_single_forum() ) {
82
+ $new_title['text'] = \bbp_get_forum_title();
83
+ $new_title['format'] = \esc_attr__( 'Forum: %s', 'bbpress' );
84
+
85
+ // Topic page
86
+ } elseif ( \bbp_is_single_topic() ) {
87
+ $new_title['text'] = \bbp_get_topic_title();
88
+ $new_title['format'] = \esc_attr__( 'Topic: %s', 'bbpress' );
89
+
90
+ // Replies
91
+ } elseif ( \bbp_is_single_reply() ) {
92
+ $new_title['text'] = \bbp_get_reply_title();
93
+
94
+ // Topic tag page
95
+ } elseif ( \bbp_is_topic_tag() || \get_query_var( 'bbp_topic_tag' ) ) {
96
+ $new_title['text'] = \bbp_get_topic_tag_name();
97
+ $new_title['format'] = \esc_attr__( 'Topic Tag: %s', 'bbpress' );
98
+
99
+ /** Users *****************************************************************/
100
+
101
+ // Profile page
102
+ } elseif ( \bbp_is_single_user() ) {
103
+
104
+ // Is user viewing their own profile?
105
+ $is_user_home = \bbp_is_user_home();
106
+
107
+ // User topics created
108
+ if ( \bbp_is_single_user_topics() ) {
109
+ if ( true === $is_user_home ) {
110
+ $new_title['text'] = \esc_attr__( 'Your Topics', 'bbpress' );
111
+ } else {
112
+ $new_title['text'] = \get_userdata( \bbp_get_user_id() )->display_name;
113
+ /* translators: user's display name */
114
+ $new_title['format'] = \esc_attr__( "%s's Topics", 'bbpress' );
115
+ }
116
+
117
+ // User replies created
118
+ } elseif ( \bbp_is_single_user_replies() ) {
119
+ if ( true === $is_user_home ) {
120
+ $new_title['text'] = esc_attr__( 'Your Replies', 'bbpress' );
121
+ } else {
122
+ $new_title['text'] = \get_userdata( \bbp_get_user_id() )->display_name;
123
+ /* translators: user's display name */
124
+ $new_title['format'] = \esc_attr__( "%s's Replies", 'bbpress' );
125
+ }
126
+
127
+ // User favorites
128
+ } elseif ( \bbp_is_favorites() ) {
129
+ if ( true === $is_user_home ) {
130
+ $new_title['text'] = \esc_attr__( 'Your Favorites', 'bbpress' );
131
+ } else {
132
+ $new_title['text'] = \get_userdata( \bbp_get_user_id() )->display_name;
133
+ /* translators: user's display name */
134
+ $new_title['format'] = \esc_attr__( "%s's Favorites", 'bbpress' );
135
+ }
136
+
137
+ // User subscriptions
138
+ } elseif ( \bbp_is_subscriptions() ) {
139
+ if ( true === $is_user_home ) {
140
+ $new_title['text'] = \esc_attr__( 'Your Subscriptions', 'bbpress' );
141
+ } else {
142
+ $new_title['text'] = \get_userdata( \bbp_get_user_id() )->display_name;
143
+ /* translators: user's display name */
144
+ $new_title['format'] = \esc_attr__( "%s's Subscriptions", 'bbpress' );
145
+ }
146
+
147
+ // User "home"
148
+ } else {
149
+ if ( true === $is_user_home ) {
150
+ $new_title['text'] = \esc_attr__( 'Your Profile', 'bbpress' );
151
+ } else {
152
+ $new_title['text'] = \get_userdata( \bbp_get_user_id() )->display_name;
153
+ /* translators: user's display name */
154
+ $new_title['format'] = \esc_attr__( "%s's Profile", 'bbpress' );
155
+ }
156
+ }
157
+
158
+ // Profile edit page
159
+ } elseif ( \bbp_is_single_user_edit() ) {
160
+
161
+ // Current user
162
+ if ( \bbp_is_user_home_edit() ) {
163
+ $new_title['text'] = \esc_attr__( 'Edit Your Profile', 'bbpress' );
164
+
165
+ // Other user
166
+ } else {
167
+ $new_title['text'] = \get_userdata( \bbp_get_user_id() )->display_name;
168
+ $new_title['format'] = \esc_attr__( "Edit %s's Profile", 'bbpress' );
169
+ }
170
+
171
+ /** Views *****************************************************************/
172
+
173
+ // Views
174
+ } elseif ( \bbp_is_single_view() ) {
175
+ $new_title['text'] = \bbp_get_view_title();
176
+ $new_title['format'] = \esc_attr__( 'View: %s', 'bbpress' );
177
+
178
+ /** Search ****************************************************************/
179
+
180
+ // Search
181
+ } elseif ( \bbp_is_search() ) {
182
+ $new_title['text'] = \bbp_get_search_title();
183
+ }
184
+
185
+ // This filter is deprecated. Use 'bbp_before_title_parse_args' instead.
186
+ $new_title = \apply_filters( 'bbp_raw_title_array', $new_title );
187
+
188
+ // Set title array defaults
189
+ $new_title = \bbp_parse_args(
190
+ $new_title,
191
+ [
192
+ 'text' => $title,
193
+ 'format' => '%s',
194
+ ],
195
+ 'title'
196
+ );
197
+
198
+ // Get the formatted raw title
199
+ $new_title = sprintf( $new_title['format'], $new_title['text'] );
200
+
201
+ // Filter the raw title.
202
+ $new_title = \apply_filters( 'bbp_raw_title', $new_title, $sep = '&raquo;', $seplocation = '' );
203
+
204
+ // Compare new title with original title
205
+ if ( $new_title === $title ) {
206
+ return $title;
207
+ }
208
+
209
+ // phpcs:enable, Squiz.Commenting.BlockComment, Generic.WhiteSpace.ScopeIndent, WordPress.WP.I18n, Generic.Formatting.MultipleStatementAlignment -- Not my code.
210
+
211
+ return $new_title;
212
+ }
213
+
214
\add_filter( 'the_seo_framework_seo_column_keys_order', __NAMESPACE__ . '\\_bbpress_filter_order_keys' );
215
/**
216
* Filters the order keys for The SEO Bar.
inc/compat/plugin-woocommerce.php CHANGED
@@ -8,8 +8,6 @@ namespace The_SEO_Framework;
8
9
defined( 'THE_SEO_FRAMEWORK_PRESENT' ) and $_this = \the_seo_framework_class() and $this instanceof $_this or die;
10
11
- // @TODO Move everything WC related over to here.
12
-
13
\add_action( 'woocommerce_init', __NAMESPACE__ . '\\_init_wc_compat' );
14
/**
15
* Initializes WooCommerce compatibility.
8
9
defined( 'THE_SEO_FRAMEWORK_PRESENT' ) and $_this = \the_seo_framework_class() and $this instanceof $_this or die;
10
11
\add_action( 'woocommerce_init', __NAMESPACE__ . '\\_init_wc_compat' );
12
/**
13
* Initializes WooCommerce compatibility.
inc/views/admin/metaboxes/robots-metabox.php CHANGED
@@ -15,16 +15,22 @@ $instance = $this->get_view_instance( 'the_seo_framework_robots_metabox', $insta
15
16
switch ( $instance ) :
17
case 'the_seo_framework_robots_metabox_main':
18
//* Robots types
19
$types = [
20
'category' => __( 'Category archives', 'autodescription' ),
21
'tag' => __( 'Tag archives', 'autodescription' ),
22
'author' => __( 'Author pages', 'autodescription' ),
23
'date' => __( 'Date archives', 'autodescription' ),
24
'search' => __( 'Search pages', 'autodescription' ),
25
'site' => _x( 'the entire site', '...for the entire site', 'autodescription' ),
26
];
27
28
$post_types = $this->get_rewritable_post_types();
29
30
//* Robots i18n
@@ -229,7 +235,7 @@ switch ( $instance ) :
229
$_video_snippet_types['number'][ $_n ] = sprintf( _n( '%d second', '%d seconds', $_n, 'autodescription' ), $_n );
230
}
231
$video_preview_options = '';
232
- $_current = $this->get_option( 'max_video_preview' );
233
foreach ( $_video_snippet_types as $_type => $_values ) {
234
$_label = 'default' === $_type
235
? __( 'Standard directive', 'autodescription' )
15
16
switch ( $instance ) :
17
case 'the_seo_framework_robots_metabox_main':
18
+ // Tackle the plurality issue with https://github.com/sybrew/the-seo-framework/issues/20 ?
19
+ // Or should we tacking it when we add _all_ term type specifics (like SEO exclusion) support?
20
+
21
//* Robots types
22
$types = [
23
+ // TODO These ARE plural. https://github.com/sybrew/the-seo-framework/issues/508#issuecomment-597654089
24
'category' => __( 'Category archives', 'autodescription' ),
25
'tag' => __( 'Tag archives', 'autodescription' ),
26
'author' => __( 'Author pages', 'autodescription' ),
27
'date' => __( 'Date archives', 'autodescription' ),
28
'search' => __( 'Search pages', 'autodescription' ),
29
+ // TODO This IS NOT plural. https://github.com/sybrew/the-seo-framework/issues/508#issuecomment-597654089
30
'site' => _x( 'the entire site', '...for the entire site', 'autodescription' ),
31
];
32
33
+ // TODO This IS plural. https://github.com/sybrew/the-seo-framework/issues/508#issuecomment-597654089
34
$post_types = $this->get_rewritable_post_types();
35
36
//* Robots i18n
235
$_video_snippet_types['number'][ $_n ] = sprintf( _n( '%d second', '%d seconds', $_n, 'autodescription' ), $_n );
236
}
237
$video_preview_options = '';
238
+ $_current = $this->get_option( 'max_video_preview' );
239
foreach ( $_video_snippet_types as $_type => $_values ) {
240
$_label = 'default' === $_type
241
? __( 'Standard directive', 'autodescription' )
inc/views/admin/metaboxes/social-metabox.php CHANGED
@@ -154,7 +154,7 @@ switch ( $instance ) :
154
?>
155
<p>
156
<label for="<?php $this->field_id( 'theme_color' ); ?>">
157
- <strong><?php esc_html_e( 'Theme color', 'autodescription' ); ?></strong>
158
</label>
159
</p>
160
<p>
@@ -283,9 +283,8 @@ switch ( $instance ) :
283
echo $this->code_wrap( $name ); // phpcs:ignore, WordPress.Security.EscapeOutput
284
echo ' ';
285
$this->make_info(
286
- esc_html( 'Learn more about this card.' ),
287
- esc_url( 'https://dev.twitter.com/cards/types/' . $name ),
288
- true
289
);
290
?>
291
</span>
@@ -299,8 +298,11 @@ switch ( $instance ) :
299
300
<hr>
301
302
<?php
303
- $this->description( __( 'When the following options are filled in, Twitter might link your Twitter Site or Author Profile when your post or page is shared.', 'autodescription' ) );
304
?>
305
306
<p>
@@ -351,7 +353,7 @@ switch ( $instance ) :
351
$this->make_checkbox(
352
'oembed_remove_author',
353
__( 'Remove author name?', 'autodescription' ),
354
- __( 'Discord shows the page author name above the sharing embed. Check this options if you find this undesirable.', 'autodescription' ),
355
true
356
),
357
true
154
?>
155
<p>
156
<label for="<?php $this->field_id( 'theme_color' ); ?>">
157
+ <strong><?php esc_html_e( 'Theme Color', 'autodescription' ); ?></strong>
158
</label>
159
</p>
160
<p>
283
echo $this->code_wrap( $name ); // phpcs:ignore, WordPress.Security.EscapeOutput
284
echo ' ';
285
$this->make_info(
286
+ __( 'Learn more about this card.', 'autodescription' ),
287
+ 'https://dev.twitter.com/cards/types/' . $name
288
);
289
?>
290
</span>
298
299
<hr>
300
301
+ <h4><?php esc_html_e( 'Card and Content Attribution', 'autodescription' ); ?></h4>
302
<?php
303
+ /* source: https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started#attribution */
304
+ $this->description( __( 'Twitter claims users will be able to follow and view the profiles of attributed accounts directly from the card when these fields are filled in.', 'autodescription' ) );
305
+ $this->description( __( 'However, for now, these fields seem to have no discernible effect.', 'autodescription' ) );
306
?>
307
308
<p>
353
$this->make_checkbox(
354
'oembed_remove_author',
355
__( 'Remove author name?', 'autodescription' ),
356
+ __( "Discord shows the page author's name above the sharing embed. Check this option if you find this undesirable.", 'autodescription' ),
357
true
358
),
359
true
inc/views/admin/metaboxes/title-metabox.php CHANGED
@@ -99,8 +99,8 @@ switch ( $instance ) :
99
?>
100
<h4><?php esc_html_e( 'Automated Title Settings', 'autodescription' ); ?></h4>
101
<?php
102
- $this->description( 'A title is generated for every page.', 'autodescription' );
103
- $this->description( 'Some titles may have HTML tags inserted by the author for styling.', 'autodescription' );
104
105
$info = $this->make_info(
106
sprintf(
99
?>
100
<h4><?php esc_html_e( 'Automated Title Settings', 'autodescription' ); ?></h4>
101
<?php
102
+ $this->description( __( 'A title is generated for every page.', 'autodescription' ) );
103
+ $this->description( __( 'Some titles may have HTML tags inserted by the author for styling.', 'autodescription' ) );
104
105
$info = $this->make_info(
106
sprintf(
inc/views/admin/seo-settings-columns.php CHANGED
@@ -25,8 +25,7 @@ defined( 'THE_SEO_FRAMEWORK_PRESENT' ) and $_this = the_seo_framework_class() an
25
\do_action( 'the_seo_framework_before_siteadmin_metaboxes_side', $this->seo_settings_page_hook );
26
27
/**
28
- * @TODO fill this in
29
- * @priority low 2.9.0
30
*/
31
32
\do_action( 'the_seo_framework_after_siteadmin_metaboxes_side', $this->seo_settings_page_hook );
25
\do_action( 'the_seo_framework_before_siteadmin_metaboxes_side', $this->seo_settings_page_hook );
26
27
/**
28
+ * @TODO fill this in...?
29
*/
30
31
\do_action( 'the_seo_framework_after_siteadmin_metaboxes_side', $this->seo_settings_page_hook );
inc/views/debug/output.php CHANGED
@@ -25,8 +25,8 @@ $cache_key = $this->generate_cache_key( $id, $taxonomy );
25
26
if ( is_admin() ) {
27
$bstyle = \is_rtl()
28
- ? 'direction:ltr;color:#444;font-family:Georgio,sans-serif;font-size:14px;clear:both;float:left;position:relative;width:calc( 100% - 200px );min-height:700px;padding:0;margin:20px 180px 40px 20px;overflow:hidden;border:1px solid #ccc;border-radius:3px;line-height:18px'
29
- : 'direction:ltr;color:#444;font-family:Georgio,sans-serif;font-size:14px;clear:both;float:left;position:relative;width:calc( 100% - 200px );min-height:700px;padding:0;margin:20px 20px 40px 180px;overflow:hidden;border:1px solid #ccc;border-radius:3px;line-height:18px';
30
?>
31
<div style="<?php echo $bstyle; ?>">
32
<h3 style="font-size:14px;padding:0 12px;margin:0;line-height:39px;border-bottom:2px solid #aaa;position:absolute;z-index:9002;width:100%;right:0;left:0;top:0;background:#fff;border-radius:3px 3px 0 0;height:39px;">
@@ -53,7 +53,7 @@ if ( is_admin() ) {
53
} else {
54
?>
55
<style type="text/css">.wp-ui-notification{color:#fff;background-color:#d54e21}.code.highlight{font-family:Consolas,Monaco,monospace;font-size:14px;}.theseoframework-debug h3{font-size:18px;margin:18px 0}</style>
56
- <div class="theseoframework-debug" style="direction:ltr;color:#444;font-family:Georgio,sans-serif;font-size:14px;clear:both;float:left;position:relative;width:calc( 100% - 80px );min-height:700px;padding:0;margin:40px;overflow:hidden;border:1px solid #ccc;border-radius:3px;line-height:18px">
57
<h3 style="font-size:14px;padding:0 12px;margin:0;line-height:39px;border-bottom:2px solid #aaa;position:absolute;z-index:9002;width:100%;right:0;left:0;top:0;background:#fff;border-radius:3px 3px 0 0;height:39px">
58
SEO Debug Information
59
<?php
25
26
if ( is_admin() ) {
27
$bstyle = \is_rtl()
28
+ ? 'direction:ltr;color:#444;font-family:Georgio,sans-serif;font-size:14px;clear:both;float:left;position:relative;width:calc( 100% - 200px );min-height:700px;padding:0;margin:20px 180px 40px 20px;overflow:hidden;border:1px solid #ccc;border-radius:3px;line-height:18pxfont-feature-settings:normal;font-variant:normal'
29
+ : 'direction:ltr;color:#444;font-family:Georgio,sans-serif;font-size:14px;clear:both;float:left;position:relative;width:calc( 100% - 200px );min-height:700px;padding:0;margin:20px 20px 40px 180px;overflow:hidden;border:1px solid #ccc;border-radius:3px;line-height:18pxfont-feature-settings:normal;font-variant:normal';
30
?>
31
<div style="<?php echo $bstyle; ?>">
32
<h3 style="font-size:14px;padding:0 12px;margin:0;line-height:39px;border-bottom:2px solid #aaa;position:absolute;z-index:9002;width:100%;right:0;left:0;top:0;background:#fff;border-radius:3px 3px 0 0;height:39px;">
53
} else {
54
?>
55
<style type="text/css">.wp-ui-notification{color:#fff;background-color:#d54e21}.code.highlight{font-family:Consolas,Monaco,monospace;font-size:14px;}.theseoframework-debug h3{font-size:18px;margin:18px 0}</style>
56
+ <div class="theseoframework-debug" style="direction:ltr;color:#444;font-family:Georgio,sans-serif;font-size:14px;clear:both;float:left;position:relative;width:calc( 100% - 80px );min-height:700px;padding:0;margin:40px;overflow:hidden;border:1px solid #ccc;border-radius:3px;line-height:18px;font-feature-settings:normal;font-variant:normal">
57
<h3 style="font-size:14px;padding:0 12px;margin:0;line-height:39px;border-bottom:2px solid #aaa;position:absolute;z-index:9002;width:100%;right:0;left:0;top:0;background:#fff;border-radius:3px 3px 0 0;height:39px">
58
SEO Debug Information
59
<?php
inc/views/sitemap/xml-sitemap.php CHANGED
@@ -58,4 +58,6 @@ if ( $this->the_seo_framework_debug ) {
58
echo "\n" . '<!-- System estimated peak usage: ' . number_format( memory_get_peak_usage( true ) / 1024 / 1024, 3 ) . ' MB -->';
59
echo "\n" . '<!-- Freed memory prior to generation: ' . number_format( $this->clean_up_globals_for_sitemap( true ) / 1024, 3 ) . ' kB -->';
60
echo "\n" . '<!-- Sitemap generation time: ' . number_format( microtime( true ) - $timer_start, 6 ) . ' seconds -->';
61
}
58
echo "\n" . '<!-- System estimated peak usage: ' . number_format( memory_get_peak_usage( true ) / 1024 / 1024, 3 ) . ' MB -->';
59
echo "\n" . '<!-- Freed memory prior to generation: ' . number_format( $this->clean_up_globals_for_sitemap( true ) / 1024, 3 ) . ' kB -->';
60
echo "\n" . '<!-- Sitemap generation time: ' . number_format( microtime( true ) - $timer_start, 6 ) . ' seconds -->';
61
+ echo "\n" . '<!-- Sitemap caching enabled: ' . ( $this->get_option( 'cache_sitemap' ) ? 'yes' : 'no' ) . ' -->';
62
+ echo "\n" . '<!-- Sitemap transient key: ' . \esc_html( $this->get_sitemap_transient_name() ) . ' -->';
63
}
language/autodescription.pot CHANGED
@@ -1,46 +1,63 @@
1
- # Copyright (C) 2020 The SEO Framework
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.5\n"
6
- "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/autodescription\n"
7
- "POT-Creation-Date: 2020-03-04 04:17:22+00:00\n"
8
"MIME-Version: 1.0\n"
9
"Content-Type: text/plain; charset=UTF-8\n"
10
"Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
- "Language-Team: LANGUAGE <LL@li.org>\n"
14
15
- #. translators: %s = Version number, surrounded in markdown-backticks.
16
17
- #: bootstrap/upgrade.php:255
18
msgid "Thank you for updating The SEO Framework! Your website has been upgraded successfully to use The SEO Framework at database version `%s`."
19
msgstr ""
20
21
- #: bootstrap/upgrade.php:266
22
msgid "Thank you for installing The SEO Framework! Your website is now optimized for search and social sharing, automatically. We hope you enjoy our free plugin. Good luck with your site!"
23
msgstr ""
24
25
#. translators: %s = Link, markdown.
26
-
27
- #: bootstrap/upgrade.php:275
28
msgid "The SEO Framework only identifies itself rarely during plugin upgrades. We'd like to use this opportunity to highlight our [plugin setup guide](%s)."
29
msgstr ""
30
31
- #: bootstrap/upgrade.php:421
32
msgid "Twitter Photo Cards have been deprecated. Your site now uses Summary Cards when applicable."
33
msgstr ""
34
35
- #: bootstrap/upgrade.php:451
36
msgid "The previous sitemap timestamp settings have been converted into new global timestamp settings."
37
msgstr ""
38
39
- #: bootstrap/upgrade.php:574
40
msgid "A cronjob is now used to ping search engines, and it alerts them to changes in your sitemap."
41
msgstr ""
42
43
- #: bootstrap/upgrade.php:589
44
msgid "The positions in the \"Meta Title Additions Location\" setting for the homepage have been reversed, left to right, but the output has not been changed. If you must downgrade for some reason, remember to switch the location back again."
45
msgstr ""
46
@@ -127,15 +144,10 @@ msgid "Good."
127
msgstr ""
128
129
#. translators: %s = Redirect URL markdown
130
-
131
- #: inc/classes/admin-init.class.php:435
132
msgid "There has been an error redirecting. Refresh the page or follow [this link](%s)."
133
msgstr ""
134
135
- #: inc/classes/admin-init.class.php:640 inc/classes/admin-init.class.php:701
136
- msgid "Image could not be processed."
137
- msgstr ""
138
-
139
#: inc/classes/admin-pages.class.php:62
140
msgid "SEO Settings"
141
msgstr ""
@@ -189,7 +201,6 @@ msgid "Click to change the counter type"
189
msgstr ""
190
191
#. translators: %s = number
192
-
193
#: inc/classes/admin-pages.class.php:1158
194
msgid "Characters Used: %s"
195
msgstr ""
@@ -204,7 +215,6 @@ msgid "The SEO Settings may take precedence over these settings."
204
msgstr ""
205
206
#. translators: %s = Post Type label
207
-
208
#: inc/classes/bridges/postsettings.class.php:86
209
msgid "%s SEO Settings"
210
msgstr ""
@@ -217,25 +227,11 @@ msgstr ""
217
msgid "Are you sure you want to reset all SEO settings to their defaults?"
218
msgstr ""
219
220
- #: inc/classes/bridges/scripts.class.php:418
221
- #: inc/classes/bridges/scripts.class.php:487
222
- #: inc/classes/generate-title.class.php:1179
223
- msgid "Private: %s"
224
- msgstr ""
225
-
226
- #: inc/classes/bridges/scripts.class.php:420
227
- #: inc/classes/bridges/scripts.class.php:489
228
- #: inc/classes/generate-title.class.php:1164
229
- msgid "Protected: %s"
230
- msgstr ""
231
-
232
- #. translators: Taxonomy term archive title. 1: Taxonomy singular name, 2:
233
- #. Current taxonomy term
234
#. translators: 1 = 'Assessment(s)', 2 = A list of assessments.
235
-
236
#: inc/classes/bridges/scripts.class.php:541
237
- #: inc/classes/generate-title.class.php:769
238
- #: inc/classes/generate-title.class.php:836
239
#: inc/classes/interpreters/seobar.class.php:342
240
msgid "%1$s: %2$s"
241
msgstr ""
@@ -280,25 +276,21 @@ msgid "Select Logo"
280
msgstr ""
281
282
#. translators: %s = term name
283
-
284
#: inc/classes/bridges/scripts.class.php:897
285
msgid "Select Primary %s"
286
msgstr ""
287
288
#. translators: %s = term name
289
-
290
#: inc/classes/bridges/scripts.class.php:902
291
msgid "Make primary %s"
292
msgstr ""
293
294
#. translators: %s = term name
295
-
296
#: inc/classes/bridges/scripts.class.php:904
297
msgid "Primary %s"
298
msgstr ""
299
300
#. translators: Pixel counter. 1: number (value), 2: number (guideline)
301
-
302
#: inc/classes/bridges/scripts.class.php:999
303
msgid "%1$d out of %2$d pixels are used."
304
msgstr ""
@@ -346,9 +338,7 @@ msgstr ""
346
msgid "Feed Settings"
347
msgstr ""
348
349
- #. translators: 1 = An assessment, 2 = Disclaimer, e.g. "take it with a grain
350
- #. of salt"
351
-
352
#: inc/classes/builders/seobar-page.class.php:149
353
#: inc/classes/builders/seobar-page.class.php:364
354
#: inc/classes/builders/seobar-term.class.php:164
@@ -369,7 +359,6 @@ msgid "No title could be fetched."
369
msgstr ""
370
371
#. translators: %s = "Untitled"
372
-
373
#: inc/classes/builders/seobar-page.class.php:156
374
#: inc/classes/builders/seobar-term.class.php:171
375
msgid "No title could be fetched, \"%s\" is used instead."
@@ -501,7 +490,6 @@ msgid "It's built using the excerpt field."
501
msgstr ""
502
503
#. translators: %s = list of duplicated words
504
-
505
#: inc/classes/builders/seobar-page.class.php:378
506
#: inc/classes/builders/seobar-term.class.php:366
507
msgid "Found duplicated words: %s"
@@ -567,7 +555,6 @@ msgid "The description inputted at the Edit Page screen is used."
567
msgstr ""
568
569
#. translators: 1: Word found, 2: Occurrences
570
-
571
#: inc/classes/builders/seobar-page.class.php:493
572
#: inc/classes/builders/seobar-term.class.php:463
573
msgid "&#8220;%1$s&#8221; is used %2$d times."
@@ -651,10 +638,12 @@ msgstr ""
651
#: inc/classes/builders/seobar-page.class.php:605
652
#: inc/classes/builders/seobar-term.class.php:560
653
#: inc/classes/builders/seobar-term.class.php:569
654
- #: inc/views/admin/metaboxes/robots-metabox.php:54
655
#: inc/views/edit/seo-settings-singular.php:196
656
- #: inc/views/edit/seo-settings-tt.php:60 inc/views/list/bulk-post.php:19
657
- #: inc/views/list/quick-post.php:19 inc/views/list/quick-term.php:19
658
msgid "Indexing"
659
msgstr ""
660
@@ -723,7 +712,7 @@ msgstr ""
723
#: inc/classes/builders/seobar-page.class.php:759
724
#: inc/classes/builders/seobar-term.class.php:709
725
#: inc/classes/builders/seobar-term.class.php:718
726
- #: inc/views/admin/metaboxes/robots-metabox.php:60
727
#: inc/views/list/quick-term.php:26
728
msgid "Following"
729
msgstr ""
@@ -781,10 +770,12 @@ msgstr ""
781
#: inc/classes/builders/seobar-page.class.php:890
782
#: inc/classes/builders/seobar-term.class.php:829
783
#: inc/classes/builders/seobar-term.class.php:838
784
- #: inc/views/admin/metaboxes/robots-metabox.php:66
785
#: inc/views/edit/seo-settings-singular.php:212
786
- #: inc/views/edit/seo-settings-tt.php:86 inc/views/list/bulk-post.php:33
787
- #: inc/views/list/quick-post.php:33 inc/views/list/quick-term.php:33
788
msgid "Archiving"
789
msgstr ""
790
@@ -974,7 +965,6 @@ msgid "Term redirects visitors."
974
msgstr ""
975
976
#. translators: %s = timestamp
977
-
978
#: inc/classes/builders/sitemap-base.class.php:73
979
msgid "Sitemap is generated on %s"
980
msgstr ""
@@ -984,13 +974,13 @@ msgid "Settings"
984
msgstr ""
985
986
#: inc/classes/core.class.php:227
987
- msgctxt "About us"
988
- msgid "About"
989
msgstr ""
990
991
#: inc/classes/core.class.php:232
992
- msgctxt "Plugin extensions"
993
- msgid "Extensions"
994
msgstr ""
995
996
#: inc/classes/core.class.php:265
@@ -1010,33 +1000,27 @@ msgctxt "Extension Manager is a product name; do not translate it."
1010
msgid "Get Extension Manager"
1011
msgstr ""
1012
1013
- #. translators: 1: Function name, 2: 'Deprecated', 3: Plugin Version
1014
- #. notification, 4: Replacement function
1015
-
1016
#: inc/classes/debug.class.php:150
1017
msgid "%1$s is %2$s since version %3$s of The SEO Framework! Use %4$s instead."
1018
msgstr ""
1019
1020
- #: inc/classes/debug.class.php:152 inc/classes/debug.class.php:163
1021
msgid "deprecated"
1022
msgstr ""
1023
1024
- #. translators: 1: Function name, 2: 'Deprecated', 3: Plugin Version
1025
- #. notification
1026
-
1027
#: inc/classes/debug.class.php:161
1028
msgid "%1$s is %2$s since version %3$s of The SEO Framework with no alternative available."
1029
msgstr ""
1030
1031
#. translators: %s = Version number
1032
-
1033
#: inc/classes/debug.class.php:212
1034
msgid "(This message was added in version %s of The SEO Framework.)"
1035
msgstr ""
1036
1037
- #. translators: 1: Function name, 2: 'Incorrectly', 3: Error message 4: Plugin
1038
- #. Version notification
1039
-
1040
#: inc/classes/debug.class.php:216
1041
msgid "%1$s was called %2$s. %3$s %4$s"
1042
msgstr ""
@@ -1046,8 +1030,7 @@ msgid "incorrectly"
1046
msgstr ""
1047
1048
#. translators: 1: Method or Property name, 2: Message
1049
-
1050
- #: inc/classes/debug.class.php:267
1051
msgid "%1$s is not accessible. %2$s"
1052
msgstr ""
1053
@@ -1057,159 +1040,30 @@ msgid "Source"
1057
msgstr ""
1058
1059
#. translators: %s = Blog page title. Front-end output.
1060
-
1061
- #: inc/classes/generate-description.class.php:705
1062
msgid "Latest posts: %s"
1063
msgstr ""
1064
1065
- #: inc/classes/generate-description.class.php:714
1066
msgctxt "Placement. e.g. Post Title \"on\" Blog Name"
1067
msgid "on"
1068
msgstr ""
1069
1070
#. translators: 1: Title, 2: on, 3: Blogname
1071
#. translators: 1: Option label, 2: [?] option info note, 3: Optional warning
1072
-
1073
- #: inc/classes/generate-description.class.php:718
1074
#: inc/views/admin/metaboxes/homepage-metabox.php:434
1075
#: inc/views/admin/metaboxes/homepage-metabox.php:450
1076
#: inc/views/admin/metaboxes/homepage-metabox.php:466
1077
msgid "%1$s %2$s %3$s"
1078
msgstr ""
1079
1080
- #. translators: Category archive title. 1: Category name
1081
-
1082
- #: inc/classes/generate-title.class.php:758
1083
- #: inc/classes/generate-title.class.php:783
1084
- msgid "Category: %s"
1085
- msgstr ""
1086
-
1087
- #. translators: Tag archive title. 1: Tag name
1088
-
1089
- #: inc/classes/generate-title.class.php:762
1090
- #: inc/classes/generate-title.class.php:787
1091
- msgid "Tag: %s"
1092
- msgstr ""
1093
-
1094
- #. translators: Author archive title. 1: Author name
1095
-
1096
- #: inc/classes/generate-title.class.php:775
1097
- #: inc/classes/generate-title.class.php:791
1098
- msgid "Author: %s"
1099
- msgstr ""
1100
-
1101
- #: inc/classes/generate-title.class.php:777
1102
- #: inc/classes/generate-title.class.php:839
1103
- msgid "Archives"
1104
- msgstr ""
1105
-
1106
- #: inc/classes/generate-title.class.php:794
1107
- msgctxt "yearly archives date format"
1108
- msgid "Y"
1109
- msgstr ""
1110
-
1111
- #. translators: Yearly archive title. 1: Year
1112
-
1113
- #: inc/classes/generate-title.class.php:796
1114
- msgid "Year: %s"
1115
- msgstr ""
1116
-
1117
- #: inc/classes/generate-title.class.php:798
1118
- msgctxt "monthly archives date format"
1119
- msgid "F Y"
1120
- msgstr ""
1121
-
1122
- #. translators: Monthly archive title. 1: Month name and year
1123
-
1124
- #: inc/classes/generate-title.class.php:800
1125
- msgid "Month: %s"
1126
- msgstr ""
1127
-
1128
- #: inc/classes/generate-title.class.php:802
1129
- msgctxt "daily archives date format"
1130
- msgid "F j, Y"
1131
- msgstr ""
1132
-
1133
- #. translators: Daily archive title. 1: Date
1134
-
1135
- #: inc/classes/generate-title.class.php:804
1136
- msgid "Day: %s"
1137
- msgstr ""
1138
-
1139
- #: inc/classes/generate-title.class.php:808
1140
- msgctxt "post format archive title"
1141
- msgid "Asides"
1142
- msgstr ""
1143
-
1144
- #: inc/classes/generate-title.class.php:810
1145
- msgctxt "post format archive title"
1146
- msgid "Galleries"
1147
- msgstr ""
1148
-
1149
- #: inc/classes/generate-title.class.php:812
1150
- msgctxt "post format archive title"
1151
- msgid "Images"
1152
- msgstr ""
1153
-
1154
- #: inc/classes/generate-title.class.php:814
1155
- msgctxt "post format archive title"
1156
- msgid "Videos"
1157
- msgstr ""
1158
-
1159
- #: inc/classes/generate-title.class.php:816
1160
- msgctxt "post format archive title"
1161
- msgid "Quotes"
1162
- msgstr ""
1163
-
1164
- #: inc/classes/generate-title.class.php:818
1165
- msgctxt "post format archive title"
1166
- msgid "Links"
1167
- msgstr ""
1168
-
1169
- #: inc/classes/generate-title.class.php:820
1170
- msgctxt "post format archive title"
1171
- msgid "Statuses"
1172
- msgstr ""
1173
-
1174
- #: inc/classes/generate-title.class.php:822
1175
- msgctxt "post format archive title"
1176
- msgid "Audio"
1177
- msgstr ""
1178
-
1179
- #: inc/classes/generate-title.class.php:824
1180
- msgctxt "post format archive title"
1181
- msgid "Chats"
1182
- msgstr ""
1183
-
1184
- #. translators: Post type archive title. 1: Post type name
1185
-
1186
- #: inc/classes/generate-title.class.php:829
1187
- msgid "Archives: %s"
1188
- msgstr ""
1189
-
1190
- #: inc/classes/generate-title.class.php:986
1191
- msgid "Untitled"
1192
- msgstr ""
1193
-
1194
- #. translators: %s: search phrase
1195
-
1196
- #: inc/classes/generate-title.class.php:998
1197
- msgid "Search Results for &#8220;%s&#8221;"
1198
- msgstr ""
1199
-
1200
- #: inc/classes/generate-title.class.php:1113
1201
- msgid "Page %s"
1202
- msgstr ""
1203
-
1204
#. translators: 1 = SEO Bar type title, 2 = Status reason. 3 = Assessments
1205
-
1206
#: inc/classes/interpreters/seobar.class.php:292
1207
msgid "%1$s: %2$s %3$s"
1208
msgstr ""
1209
1210
- #. translators: 1 = Assessment number (mind the %d (D)), 2 = Assessment
1211
- #. explanation
1212
-
1213
#: inc/classes/interpreters/seobar.class.php:340
1214
msgid "%1$d: %2$s"
1215
msgstr ""
@@ -1314,7 +1168,6 @@ msgid "If this site publishes podcasts, enable this option. Otherwise, leave it
1314
msgstr ""
1315
1316
#. translators: %s = Reading Settings URL. Links are in Markdown!
1317
-
1318
#: inc/views/admin/metaboxes/feed-metabox.php:48
1319
msgid "Note: The feed is already converted into an excerpt through the [Reading Settings](%s)."
1320
msgstr ""
@@ -1511,7 +1364,6 @@ msgid "Preferred canonical URL scheme:"
1511
msgstr ""
1512
1513
#. translators: %s = HTTP or HTTPS
1514
-
1515
#: inc/views/admin/metaboxes/general-metabox.php:302
1516
msgid "Detect automatically (%s)"
1517
msgstr ""
@@ -1529,19 +1381,16 @@ msgid "It's recommended to turn these options on for better SEO consistency and
1529
msgstr ""
1530
1531
#. translators: the backticks are Markdown! Preserve them as-is!
1532
-
1533
#: inc/views/admin/metaboxes/general-metabox.php:325
1534
msgid "Add `rel` link tags to posts and pages?"
1535
msgstr ""
1536
1537
#. translators: the backticks are Markdown! Preserve them as-is!
1538
-
1539
#: inc/views/admin/metaboxes/general-metabox.php:336
1540
msgid "Add `rel` link tags to archives?"
1541
msgstr ""
1542
1543
#. translators: the backticks are Markdown! Preserve them as-is!
1544
-
1545
#: inc/views/admin/metaboxes/general-metabox.php:347
1546
msgid "Add `rel` link tags to the homepage?"
1547
msgstr ""
@@ -1571,7 +1420,7 @@ msgid "This outputs the complete date including hours, minutes, and timezone."
1571
msgstr ""
1572
1573
#: inc/views/admin/metaboxes/general-metabox.php:420
1574
- #: inc/views/admin/metaboxes/robots-metabox.php:319
1575
msgid "Post Type Settings"
1576
msgstr ""
1577
@@ -1592,7 +1441,7 @@ msgid "Disabling SEO allows search engines to crawl the post type without restri
1592
msgstr ""
1593
1594
#: inc/views/admin/metaboxes/general-metabox.php:431
1595
- #: inc/views/admin/metaboxes/robots-metabox.php:321
1596
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."
1597
msgstr ""
1598
@@ -1605,7 +1454,7 @@ msgid "These settings will take precedence over the settings set within the home
1605
msgstr ""
1606
1607
#: inc/views/admin/metaboxes/homepage-metabox.php:32
1608
- #: inc/views/admin/metaboxes/robots-metabox.php:48
1609
#: inc/views/admin/metaboxes/sitemaps-metabox.php:20
1610
#: inc/views/admin/metaboxes/social-metabox.php:20
1611
#: inc/views/admin/metaboxes/title-metabox.php:57
@@ -1650,7 +1499,6 @@ msgid "Note: The title placeholder is fetched from the Page SEO Settings on the
1650
msgstr ""
1651
1652
#. translators: %s = Homepage URL markdown
1653
-
1654
#: inc/views/admin/metaboxes/homepage-metabox.php:127
1655
#: inc/views/admin/metaboxes/homepage-metabox.php:177
1656
msgid "A plugin has been detected that suggests to maintain this option on the [homepage](%s)."
@@ -1745,7 +1593,6 @@ msgid "Overwritten by page settings"
1745
msgstr ""
1746
1747
#. translators: the backticks are Markdown! Preserve them as-is!
1748
-
1749
#: inc/views/admin/metaboxes/homepage-metabox.php:437
1750
msgid "Apply `noindex` to the homepage?"
1751
msgstr ""
@@ -1755,7 +1602,6 @@ msgid "This tells search engines not to show this page in their search results."
1755
msgstr ""
1756
1757
#. translators: the backticks are Markdown! Preserve them as-is!
1758
-
1759
#: inc/views/admin/metaboxes/homepage-metabox.php:453
1760
msgid "Apply `nofollow` to the homepage?"
1761
msgstr ""
@@ -1765,7 +1611,6 @@ msgid "This tells search engines not to follow links on this page."
1765
msgstr ""
1766
1767
#. translators: the backticks are Markdown! Preserve them as-is!
1768
-
1769
#: inc/views/admin/metaboxes/homepage-metabox.php:469
1770
msgid "Apply `noarchive` to the homepage?"
1771
msgstr ""
@@ -1780,7 +1625,6 @@ msgid "Warning: No public site should ever apply \"noindex\" or \"nofollow\" to
1780
msgstr ""
1781
1782
#. translators: %s = Homepage URL markdown
1783
-
1784
#: inc/views/admin/metaboxes/homepage-metabox.php:511
1785
msgid "Note: These options may be overwritten by the [page settings](%s)."
1786
msgstr ""
@@ -1794,187 +1638,181 @@ msgid "If your homepage is paginated and outputs content that's also found elsew
1794
msgstr ""
1795
1796
#. translators: the backticks are Markdown! Preserve them as-is!
1797
-
1798
#: inc/views/admin/metaboxes/homepage-metabox.php:533
1799
msgid "Apply `noindex` to every second or later page on the homepage?"
1800
msgstr ""
1801
1802
- #: inc/views/admin/metaboxes/robots-metabox.php:20
1803
msgid "Category archives"
1804
msgstr ""
1805
1806
- #: inc/views/admin/metaboxes/robots-metabox.php:21
1807
msgid "Tag archives"
1808
msgstr ""
1809
1810
- #: inc/views/admin/metaboxes/robots-metabox.php:22
1811
msgid "Author pages"
1812
msgstr ""
1813
1814
- #: inc/views/admin/metaboxes/robots-metabox.php:23
1815
msgid "Date archives"
1816
msgstr ""
1817
1818
- #: inc/views/admin/metaboxes/robots-metabox.php:24
1819
msgid "Search pages"
1820
msgstr ""
1821
1822
- #: inc/views/admin/metaboxes/robots-metabox.php:25
1823
msgctxt "...for the entire site"
1824
msgid "the entire site"
1825
msgstr ""
1826
1827
- #: inc/views/admin/metaboxes/robots-metabox.php:34
1828
msgid "These options most likely prevent indexing of the selected archives and pages. If you enable this, the selected archives or pages will urge to be removed from search engine results pages."
1829
msgstr ""
1830
1831
- #: inc/views/admin/metaboxes/robots-metabox.php:38
1832
msgid "These options most likely prevent links from being followed on the selected archives and pages. If you enable this, the selected archives or pages in-page links will gain no SEO value, including your internal links."
1833
msgstr ""
1834
1835
- #: inc/views/admin/metaboxes/robots-metabox.php:42
1836
msgid "These options most likely prevent caching of the selected archives and pages. If you enable this, bots are urged not create a cached copy of the selected archives or pages."
1837
msgstr ""
1838
1839
- #: inc/views/admin/metaboxes/robots-metabox.php:87
1840
msgid "Advanced Query Protection"
1841
msgstr ""
1842
1843
- #: inc/views/admin/metaboxes/robots-metabox.php:89
1844
msgid "Some URL queries can cause WordPress to show faux archives. When search engines spot these, they will crawl and index them, which may cause a drop in ranking. Advanced query protection will prevent robots from indexing these archives."
1845
msgstr ""
1846
1847
- #: inc/views/admin/metaboxes/robots-metabox.php:94
1848
msgid "Enable advanced query protection?"
1849
msgstr ""
1850
1851
- #: inc/views/admin/metaboxes/robots-metabox.php:103
1852
msgid "Paginated Archive Settings"
1853
msgstr ""
1854
1855
- #: inc/views/admin/metaboxes/robots-metabox.php:105
1856
msgid "Indexing the second or later page of any archive might cause duplication errors. Search engines look down upon them; therefore, it's recommended to disable indexing of those pages."
1857
msgstr ""
1858
1859
#. translators: the backticks are Markdown! Preserve them as-is!
1860
-
1861
- #: inc/views/admin/metaboxes/robots-metabox.php:112
1862
msgid "Apply `noindex` to every second or later archive page?"
1863
msgstr ""
1864
1865
- #: inc/views/admin/metaboxes/robots-metabox.php:123
1866
msgid "Copyright Directive Settings"
1867
msgstr ""
1868
1869
- #: inc/views/admin/metaboxes/robots-metabox.php:125
1870
msgid "Some search engines allow you to control copyright directives on the content they aggregate. It's best to allow some content to be taken by these aggregators, as that can improve contextualized exposure via snippets and previews. When left unspecified, regional regulations may apply. It is up to the aggregator to honor these requests."
1871
msgstr ""
1872
1873
- #: inc/views/admin/metaboxes/robots-metabox.php:130
1874
msgid "Specify aggregator copyright compliance directives?"
1875
msgstr ""
1876
1877
- #: inc/views/admin/metaboxes/robots-metabox.php:138
1878
msgid "Unlimited"
1879
msgstr ""
1880
1881
- #: inc/views/admin/metaboxes/robots-metabox.php:139
1882
msgctxt "quanity: zero"
1883
msgid "None, disallow snippet"
1884
msgstr ""
1885
1886
#. translators: %d = number
1887
-
1888
- #: inc/views/admin/metaboxes/robots-metabox.php:143
1889
msgid "%d character"
1890
msgid_plural "%d characters"
1891
msgstr[0] ""
1892
msgstr[1] ""
1893
1894
- #: inc/views/admin/metaboxes/robots-metabox.php:149
1895
- #: inc/views/admin/metaboxes/robots-metabox.php:235
1896
msgid "Standard directive"
1897
msgstr ""
1898
1899
- #: inc/views/admin/metaboxes/robots-metabox.php:150
1900
- #: inc/views/admin/metaboxes/robots-metabox.php:236
1901
msgid "Granular directive"
1902
msgstr ""
1903
1904
- #: inc/views/admin/metaboxes/robots-metabox.php:173
1905
msgid "Maximum text snippet length"
1906
msgstr ""
1907
1908
- #: inc/views/admin/metaboxes/robots-metabox.php:177
1909
msgid "This may limit the text snippet length for all pages on this site."
1910
msgstr ""
1911
1912
- #: inc/views/admin/metaboxes/robots-metabox.php:181
1913
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."
1914
msgstr ""
1915
1916
- #: inc/views/admin/metaboxes/robots-metabox.php:190
1917
msgctxt "quanity: zero"
1918
msgid "None, disallow preview"
1919
msgstr ""
1920
1921
- #: inc/views/admin/metaboxes/robots-metabox.php:191
1922
msgid "Thumbnail or standard size"
1923
msgstr ""
1924
1925
- #: inc/views/admin/metaboxes/robots-metabox.php:192
1926
msgid "Large or full size"
1927
msgstr ""
1928
1929
- #: inc/views/admin/metaboxes/robots-metabox.php:210
1930
msgid "Maximum image preview size"
1931
msgstr ""
1932
1933
- #: inc/views/admin/metaboxes/robots-metabox.php:214
1934
msgid "This may limit the image preview size for all images from this site."
1935
msgstr ""
1936
1937
- #: inc/views/admin/metaboxes/robots-metabox.php:224
1938
msgid "Full video preview"
1939
msgstr ""
1940
1941
- #: inc/views/admin/metaboxes/robots-metabox.php:225
1942
msgctxt "quanity: zero"
1943
msgid "None, still image only"
1944
msgstr ""
1945
1946
#. translators: %d = number
1947
-
1948
- #: inc/views/admin/metaboxes/robots-metabox.php:229
1949
msgid "%d second"
1950
msgid_plural "%d seconds"
1951
msgstr[0] ""
1952
msgstr[1] ""
1953
1954
- #: inc/views/admin/metaboxes/robots-metabox.php:258
1955
msgid "Maximum video preview length"
1956
msgstr ""
1957
1958
- #: inc/views/admin/metaboxes/robots-metabox.php:262
1959
msgid "This may limit the video preview length for all videos on this site."
1960
msgstr ""
1961
1962
- #. translators: 1 = noindex/nofollow/noarchive, 2 = Post, Post type, Category
1963
- #. archives, the entire site, etc.
1964
-
1965
- #: inc/views/admin/metaboxes/robots-metabox.php:277
1966
msgid "Apply %1$s to %2$s?"
1967
msgstr ""
1968
1969
- #: inc/views/admin/metaboxes/robots-metabox.php:282
1970
msgid "Robots Settings"
1971
msgstr ""
1972
1973
- #: inc/views/admin/metaboxes/robots-metabox.php:307
1974
msgid "Warning: No public site should ever enable this option."
1975
msgstr ""
1976
1977
- #: inc/views/admin/metaboxes/robots-metabox.php:326
1978
msgid "Warning: No site should enable these options for Posts and Pages."
1979
msgstr ""
1980
@@ -2163,7 +2001,6 @@ msgid "These settings do not affect sharing behavior with the social networks."
2163
msgstr ""
2164
2165
#. translators: %s = Learn more URL. Markdown!
2166
-
2167
#: inc/views/admin/metaboxes/schema-metabox.php:289
2168
msgid "These settings are marked for removal. When you clear a field, it will be hidden forever. [Learn more](%s)."
2169
msgstr ""
@@ -2245,9 +2082,7 @@ msgstr ""
2245
msgid "Note: You're using the plain permalink structure; so, no robots.txt file can be generated."
2246
msgstr ""
2247
2248
- #. translators: 1 = Link to settings, Markdown. 2 = example input, also
2249
- #. markdown! Preserve the Markdown as-is!
2250
-
2251
#: inc/views/admin/metaboxes/sitemaps-metabox.php:158
2252
msgid "Change your [Permalink Settings](%1$s). Recommended structure: `%2$s`."
2253
msgstr ""
@@ -2285,7 +2120,6 @@ msgid "The modified time suggests to search engines where to look for content ch
2285
msgstr ""
2286
2287
#. translators: the backticks are Markdown! Preserve them as-is!
2288
-
2289
#: inc/views/admin/metaboxes/sitemaps-metabox.php:216
2290
msgid "Add `<lastmod>` to the sitemap?"
2291
msgstr ""
@@ -2299,7 +2133,6 @@ msgid "The priority index suggests to search engines which pages are deemed more
2299
msgstr ""
2300
2301
#. translators: the backticks are Markdown! Preserve them as-is!
2302
-
2303
#: inc/views/admin/metaboxes/sitemaps-metabox.php:238
2304
msgid "Add `<priority>` to the sitemap?"
2305
msgstr ""
@@ -2329,7 +2162,6 @@ msgid "Notify Search Engines"
2329
msgstr ""
2330
2331
#. translators: %s = Google
2332
-
2333
#: inc/views/admin/metaboxes/sitemaps-metabox.php:285
2334
msgid "Notify %s about sitemap changes?"
2335
msgstr ""
@@ -2459,7 +2291,7 @@ msgid "Discord styles embeds with the theme color. The theme color can also affe
2459
msgstr ""
2460
2461
#: inc/views/admin/metaboxes/social-metabox.php:157
2462
- msgid "Theme color"
2463
msgstr ""
2464
2465
#: inc/views/admin/metaboxes/social-metabox.php:165
@@ -2516,7 +2348,7 @@ msgid "Your Facebook profile."
2516
msgstr ""
2517
2518
#: inc/views/admin/metaboxes/social-metabox.php:242
2519
- #: inc/views/admin/metaboxes/social-metabox.php:334
2520
msgid "Authors can override this option on their profile page."
2521
msgstr ""
2522
@@ -2541,60 +2373,70 @@ msgstr ""
2541
msgid "The Twitter Card type may have the image highlighted, either small at the side or large above."
2542
msgstr ""
2543
2544
- #: inc/views/admin/metaboxes/social-metabox.php:303
2545
- msgid "When the following options are filled in, Twitter might link your Twitter Site or Author Profile when your post or page is shared."
2546
msgstr ""
2547
2548
- #: inc/views/admin/metaboxes/social-metabox.php:308
2549
msgid "Website Twitter Profile"
2550
msgstr ""
2551
2552
- #: inc/views/admin/metaboxes/social-metabox.php:312
2553
- #: inc/views/admin/metaboxes/social-metabox.php:328
2554
msgid "Find your @username."
2555
msgstr ""
2556
2557
- #: inc/views/admin/metaboxes/social-metabox.php:324
2558
msgid "Twitter Author Fallback Profile"
2559
msgstr ""
2560
2561
- #: inc/views/admin/metaboxes/social-metabox.php:343
2562
msgid "oEmbed Settings"
2563
msgstr ""
2564
2565
- #: inc/views/admin/metaboxes/social-metabox.php:345
2566
msgid "Some social sharing services and clients, like WordPress and Discord, obtain the linked page information via oEmbed."
2567
msgstr ""
2568
2569
- #: inc/views/admin/metaboxes/social-metabox.php:353
2570
msgid "Remove author name?"
2571
msgstr ""
2572
2573
- #: inc/views/admin/metaboxes/social-metabox.php:354
2574
- msgid "Discord shows the page author name above the sharing embed. Check this options if you find this undesirable."
2575
msgstr ""
2576
2577
- #: inc/views/admin/metaboxes/social-metabox.php:362
2578
msgid "Posts"
2579
msgstr ""
2580
2581
- #: inc/views/admin/metaboxes/social-metabox.php:365
2582
msgid "Post Date Settings"
2583
msgstr ""
2584
2585
- #: inc/views/admin/metaboxes/social-metabox.php:367
2586
msgid "Some social sites output the shared post's publishing and modified data in the sharing snippet."
2587
msgstr ""
2588
2589
#. translators: the backticks are Markdown! Preserve them as-is!
2590
-
2591
- #: inc/views/admin/metaboxes/social-metabox.php:378
2592
msgid "Add `article:published_time` to posts?"
2593
msgstr ""
2594
2595
#. translators: the backticks are Markdown! Preserve them as-is!
2596
-
2597
- #: inc/views/admin/metaboxes/social-metabox.php:388
2598
msgid "Add `article:modified_time` to posts?"
2599
msgstr ""
2600
@@ -2619,8 +2461,15 @@ msgstr ""
2619
msgid "Prefixes"
2620
msgstr ""
2621
2622
- #. translators: %s = HTML tag example
2623
2624
#: inc/views/admin/metaboxes/title-metabox.php:108
2625
msgid "This strips HTML tags, like %s, from the title."
2626
msgstr ""
@@ -2665,10 +2514,6 @@ msgstr ""
2665
msgid "Note: Only use this option if you are aware of its SEO effects."
2666
msgstr ""
2667
2668
- #: inc/views/admin/metaboxes/title-metabox.php:207
2669
- msgid "Category"
2670
- msgstr ""
2671
-
2672
#: inc/views/admin/metaboxes/title-metabox.php:226
2673
msgid "Example Category"
2674
msgstr ""
@@ -2722,7 +2567,6 @@ msgid "Get the Yandex verification code."
2722
msgstr ""
2723
2724
#. translators: literal translation from '百度搜索资源平台'-Code
2725
-
2726
#: inc/views/admin/metaboxes/webmaster-metabox.php:57
2727
msgid "Baidu Search Resource Platform Code"
2728
msgstr ""
@@ -2786,13 +2630,15 @@ msgid "Use this when you want to rearrange the title parts manually."
2786
msgstr ""
2787
2788
#: inc/views/edit/seo-settings-singular.php:204
2789
- #: inc/views/edit/seo-settings-tt.php:73 inc/views/list/bulk-post.php:26
2790
#: inc/views/list/quick-post.php:26
2791
msgid "Link following"
2792
msgstr ""
2793
2794
#: inc/views/edit/seo-settings-singular.php:222
2795
- #: inc/views/edit/seo-settings-tt.php:279 inc/views/list/quick-post.php:57
2796
#: inc/views/list/quick-term.php:57
2797
msgid "Canonical URL"
2798
msgstr ""
@@ -2811,9 +2657,9 @@ msgid "Note: A non-default selection will overwrite the global homepage settings
2811
msgstr ""
2812
2813
#. translators: %s = default option value
2814
-
2815
#: inc/views/edit/seo-settings-singular.php:289
2816
- #: inc/views/edit/seo-settings-tt.php:316 inc/views/list/quick-post.php:74
2817
#: inc/views/list/quick-term.php:74
2818
msgid "Default (%s)"
2819
msgstr ""
@@ -2831,7 +2677,8 @@ msgid "Exclude this page from all archive queries on this site."
2831
msgstr ""
2832
2833
#: inc/views/edit/seo-settings-singular.php:347
2834
- #: inc/views/edit/seo-settings-tt.php:332 inc/views/list/quick-post.php:87
2835
#: inc/views/list/quick-term.php:87
2836
msgid "301 Redirect URL"
2837
msgstr ""
@@ -2861,8 +2708,10 @@ msgstr ""
2861
msgid "Social SEO Settings"
2862
msgstr ""
2863
2864
- #: inc/views/edit/seo-settings-tt.php:272 inc/views/list/bulk-post.php:54
2865
- #: inc/views/list/quick-post.php:54 inc/views/list/quick-term.php:54
2866
msgid "Visibility SEO Settings"
2867
msgstr ""
2868
@@ -2870,10 +2719,6 @@ msgstr ""
2870
msgid "These directives may urge robots not to display, follow links on, or create a cached copy of this term."
2871
msgstr ""
2872
2873
- #: inc/views/list/bulk-post.php:67
2874
- msgid "&mdash; No Change &mdash;"
2875
- msgstr ""
2876
-
2877
#: inc/views/list/bulk-post.php:68
2878
msgid "Default (unknown)"
2879
msgstr ""
@@ -2900,13 +2745,11 @@ msgid "XML Sitemap"
2900
msgstr ""
2901
2902
#. translators: URLs are in Markdown. Don't forget to localize the URLs.
2903
-
2904
#: inc/views/sitemap/xsl-stylesheet.php:244
2905
msgid "This is a generated XML Sitemap, meant to be consumed by search engines like [Google](https://www.google.com/) or [Bing](https://www.bing.com/)."
2906
msgstr ""
2907
2908
#. translators: URLs are in Markdown. Don't localize this URL.
2909
-
2910
#: inc/views/sitemap/xsl-stylesheet.php:264
2911
msgid "You can find more information on XML sitemaps at [sitemaps.org](https://www.sitemaps.org/)."
2912
msgstr ""
@@ -2924,13 +2767,11 @@ msgid "Priority"
2924
msgstr ""
2925
2926
#. translators: URLs are in Markdown.
2927
-
2928
#: inc/views/sitemap/xsl-stylesheet.php:366
2929
msgid "Generated by [The SEO Framework](https://theseoframework.com/)"
2930
msgstr ""
2931
2932
#. translators: %s = term name
2933
-
2934
#: inc/views/templates/inpost/primary-term-selector.php:28
2935
msgid "The buttons below are for primary %s selection."
2936
msgstr ""
@@ -2938,22 +2779,3 @@ msgstr ""
2938
#: inc/views/templates/settings/settings.php:14
2939
msgid "This post type is disabled, so this option won't work."
2940
msgstr ""
2941
- #. Plugin Name of the plugin/theme
2942
- msgid "The SEO Framework"
2943
- msgstr ""
2944
-
2945
- #. Plugin URI of the plugin/theme
2946
- msgid "https://theseoframework.com/"
2947
- msgstr ""
2948
-
2949
- #. Description of the plugin/theme
2950
- msgid "An automated, advanced, accessible, unbranded and extremely fast SEO solution for your WordPress website."
2951
- msgstr ""
2952
-
2953
- #. Author of the plugin/theme
2954
- msgid "The SEO Framework Team"
2955
- msgstr ""
2956
-
2957
- #. Author URI of the plugin/theme
2958
- msgid "https://theseoframework.com/"
2959
- msgstr ""
1
+ # Copyright (C) 2020 The SEO Framework Team
2
+ # This file is distributed under the same license as the The SEO Framework plugin.
3
msgid ""
4
msgstr ""
5
+ "Project-Id-Version: The SEO Framework 4.0.6\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/trunk\n"
7
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
+ "Language-Team: LANGUAGE <LL@li.org>\n"
9
"MIME-Version: 1.0\n"
10
"Content-Type: text/plain; charset=UTF-8\n"
11
"Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2020-04-28T14:51:39+02:00\n"
13
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.4.0\n"
15
+ "X-Domain: autodescription\n"
16
17
+ #. Plugin Name of the plugin
18
+ msgid "The SEO Framework"
19
+ msgstr ""
20
+
21
+ #. Plugin URI of the plugin
22
+ #. Author URI of the plugin
23
+ msgid "https://theseoframework.com/"
24
+ msgstr ""
25
26
+ #. Description of the plugin
27
+ msgid "An automated, advanced, accessible, unbranded and extremely fast SEO solution for your WordPress website."
28
+ msgstr ""
29
+
30
+ #. Author of the plugin
31
+ msgid "The SEO Framework Team"
32
+ msgstr ""
33
+
34
+ #. translators: %s = Version number, surrounded in markdown-backticks.
35
+ #: bootstrap/upgrade.php:259
36
msgid "Thank you for updating The SEO Framework! Your website has been upgraded successfully to use The SEO Framework at database version `%s`."
37
msgstr ""
38
39
+ #: bootstrap/upgrade.php:270
40
msgid "Thank you for installing The SEO Framework! Your website is now optimized for search and social sharing, automatically. We hope you enjoy our free plugin. Good luck with your site!"
41
msgstr ""
42
43
#. translators: %s = Link, markdown.
44
+ #: bootstrap/upgrade.php:279
45
msgid "The SEO Framework only identifies itself rarely during plugin upgrades. We'd like to use this opportunity to highlight our [plugin setup guide](%s)."
46
msgstr ""
47
48
+ #: bootstrap/upgrade.php:425
49
msgid "Twitter Photo Cards have been deprecated. Your site now uses Summary Cards when applicable."
50
msgstr ""
51
52
+ #: bootstrap/upgrade.php:455
53
msgid "The previous sitemap timestamp settings have been converted into new global timestamp settings."
54
msgstr ""
55
56
+ #: bootstrap/upgrade.php:578
57
msgid "A cronjob is now used to ping search engines, and it alerts them to changes in your sitemap."
58
msgstr ""
59
60
+ #: bootstrap/upgrade.php:593
61
msgid "The positions in the \"Meta Title Additions Location\" setting for the homepage have been reversed, left to right, but the output has not been changed. If you must downgrade for some reason, remember to switch the location back again."
62
msgstr ""
63
144
msgstr ""
145
146
#. translators: %s = Redirect URL markdown
147
+ #: inc/classes/admin-init.class.php:437
148
msgid "There has been an error redirecting. Refresh the page or follow [this link](%s)."
149
msgstr ""
150
151
#: inc/classes/admin-pages.class.php:62
152
msgid "SEO Settings"
153
msgstr ""
201
msgstr ""
202
203
#. translators: %s = number
204
#: inc/classes/admin-pages.class.php:1158
205
msgid "Characters Used: %s"
206
msgstr ""
215
msgstr ""
216
217
#. translators: %s = Post Type label
218
#: inc/classes/bridges/postsettings.class.php:86
219
msgid "%s SEO Settings"
220
msgstr ""
227
msgid "Are you sure you want to reset all SEO settings to their defaults?"
228
msgstr ""
229
230
+ #. translators: Taxonomy term archive title. 1: Taxonomy singular name, 2: Current taxonomy term
231
#. translators: 1 = 'Assessment(s)', 2 = A list of assessments.
232
#: inc/classes/bridges/scripts.class.php:541
233
+ #: inc/classes/generate-title.class.php:775
234
+ #: inc/classes/generate-title.class.php:842
235
#: inc/classes/interpreters/seobar.class.php:342
236
msgid "%1$s: %2$s"
237
msgstr ""
276
msgstr ""
277
278
#. translators: %s = term name
279
#: inc/classes/bridges/scripts.class.php:897
280
msgid "Select Primary %s"
281
msgstr ""
282
283
#. translators: %s = term name
284
#: inc/classes/bridges/scripts.class.php:902
285
msgid "Make primary %s"
286
msgstr ""
287
288
#. translators: %s = term name
289
#: inc/classes/bridges/scripts.class.php:904
290
msgid "Primary %s"
291
msgstr ""
292
293
#. translators: Pixel counter. 1: number (value), 2: number (guideline)
294
#: inc/classes/bridges/scripts.class.php:999
295
msgid "%1$d out of %2$d pixels are used."
296
msgstr ""
338
msgid "Feed Settings"
339
msgstr ""
340
341
+ #. translators: 1 = An assessment, 2 = Disclaimer, e.g. "take it with a grain of salt"
342
#: inc/classes/builders/seobar-page.class.php:149
343
#: inc/classes/builders/seobar-page.class.php:364
344
#: inc/classes/builders/seobar-term.class.php:164
359
msgstr ""
360
361
#. translators: %s = "Untitled"
362
#: inc/classes/builders/seobar-page.class.php:156
363
#: inc/classes/builders/seobar-term.class.php:171
364
msgid "No title could be fetched, \"%s\" is used instead."
490
msgstr ""
491
492
#. translators: %s = list of duplicated words
493
#: inc/classes/builders/seobar-page.class.php:378
494
#: inc/classes/builders/seobar-term.class.php:366
495
msgid "Found duplicated words: %s"
555
msgstr ""
556
557
#. translators: 1: Word found, 2: Occurrences
558
#: inc/classes/builders/seobar-page.class.php:493
559
#: inc/classes/builders/seobar-term.class.php:463
560
msgid "&#8220;%1$s&#8221; is used %2$d times."
638
#: inc/classes/builders/seobar-page.class.php:605
639
#: inc/classes/builders/seobar-term.class.php:560
640
#: inc/classes/builders/seobar-term.class.php:569
641
+ #: inc/views/admin/metaboxes/robots-metabox.php:60
642
#: inc/views/edit/seo-settings-singular.php:196
643
+ #: inc/views/edit/seo-settings-tt.php:60
644
+ #: inc/views/list/bulk-post.php:19
645
+ #: inc/views/list/quick-post.php:19
646
+ #: inc/views/list/quick-term.php:19
647
msgid "Indexing"
648
msgstr ""
649
712
#: inc/classes/builders/seobar-page.class.php:759
713
#: inc/classes/builders/seobar-term.class.php:709
714
#: inc/classes/builders/seobar-term.class.php:718
715
+ #: inc/views/admin/metaboxes/robots-metabox.php:66
716
#: inc/views/list/quick-term.php:26
717
msgid "Following"
718
msgstr ""
770
#: inc/classes/builders/seobar-page.class.php:890
771
#: inc/classes/builders/seobar-term.class.php:829
772
#: inc/classes/builders/seobar-term.class.php:838
773
+ #: inc/views/admin/metaboxes/robots-metabox.php:72
774
#: inc/views/edit/seo-settings-singular.php:212
775
+ #: inc/views/edit/seo-settings-tt.php:86
776
+ #: inc/views/list/bulk-post.php:33
777
+ #: inc/views/list/quick-post.php:33
778
+ #: inc/views/list/quick-term.php:33
779
msgid "Archiving"
780
msgstr ""
781
965
msgstr ""
966
967
#. translators: %s = timestamp
968
#: inc/classes/builders/sitemap-base.class.php:73
969
msgid "Sitemap is generated on %s"
970
msgstr ""
974
msgstr ""
975
976
#: inc/classes/core.class.php:227
977
+ msgctxt "Plugin extensions"
978
+ msgid "Extensions"
979
msgstr ""
980
981
#: inc/classes/core.class.php:232
982
+ msgctxt "Plugin pricing"
983
+ msgid "Pricing"
984
msgstr ""
985
986
#: inc/classes/core.class.php:265
1000
msgid "Get Extension Manager"
1001
msgstr ""
1002
1003
+ #. translators: 1: Function name, 2: 'Deprecated', 3: Plugin Version notification, 4: Replacement function
1004
#: inc/classes/debug.class.php:150
1005
msgid "%1$s is %2$s since version %3$s of The SEO Framework! Use %4$s instead."
1006
msgstr ""
1007
1008
+ #: inc/classes/debug.class.php:152
1009
+ #: inc/classes/debug.class.php:163
1010
msgid "deprecated"
1011
msgstr ""
1012
1013
+ #. translators: 1: Function name, 2: 'Deprecated', 3: Plugin Version notification
1014
#: inc/classes/debug.class.php:161
1015
msgid "%1$s is %2$s since version %3$s of The SEO Framework with no alternative available."
1016
msgstr ""
1017
1018
#. translators: %s = Version number
1019
#: inc/classes/debug.class.php:212
1020
msgid "(This message was added in version %s of The SEO Framework.)"
1021
msgstr ""
1022
1023
+ #. translators: 1: Function name, 2: 'Incorrectly', 3: Error message 4: Plugin Version notification
1024
#: inc/classes/debug.class.php:216
1025
msgid "%1$s was called %2$s. %3$s %4$s"
1026
msgstr ""
1030
msgstr ""
1031
1032
#. translators: 1: Method or Property name, 2: Message
1033
+ #: inc/classes/debug.class.php:266
1034
msgid "%1$s is not accessible. %2$s"
1035
msgstr ""
1036
1040
msgstr ""
1041
1042
#. translators: %s = Blog page title. Front-end output.
1043
+ #: inc/classes/generate-description.class.php:721
1044
msgid "Latest posts: %s"
1045
msgstr ""
1046
1047
+ #: inc/classes/generate-description.class.php:730
1048
msgctxt "Placement. e.g. Post Title \"on\" Blog Name"
1049
msgid "on"
1050
msgstr ""
1051
1052
#. translators: 1: Title, 2: on, 3: Blogname
1053
#. translators: 1: Option label, 2: [?] option info note, 3: Optional warning
1054
+ #: inc/classes/generate-description.class.php:734
1055
#: inc/views/admin/metaboxes/homepage-metabox.php:434
1056
#: inc/views/admin/metaboxes/homepage-metabox.php:450
1057
#: inc/views/admin/metaboxes/homepage-metabox.php:466
1058
msgid "%1$s %2$s %3$s"
1059
msgstr ""
1060
1061
#. translators: 1 = SEO Bar type title, 2 = Status reason. 3 = Assessments
1062
#: inc/classes/interpreters/seobar.class.php:292
1063
msgid "%1$s: %2$s %3$s"
1064
msgstr ""
1065
1066
+ #. translators: 1 = Assessment number (mind the %d (D)), 2 = Assessment explanation
1067
#: inc/classes/interpreters/seobar.class.php:340
1068
msgid "%1$d: %2$s"
1069
msgstr ""
1168
msgstr ""
1169
1170
#. translators: %s = Reading Settings URL. Links are in Markdown!
1171
#: inc/views/admin/metaboxes/feed-metabox.php:48
1172
msgid "Note: The feed is already converted into an excerpt through the [Reading Settings](%s)."
1173
msgstr ""
1364
msgstr ""
1365
1366
#. translators: %s = HTTP or HTTPS
1367
#: inc/views/admin/metaboxes/general-metabox.php:302
1368
msgid "Detect automatically (%s)"
1369
msgstr ""
1381
msgstr ""
1382
1383
#. translators: the backticks are Markdown! Preserve them as-is!
1384
#: inc/views/admin/metaboxes/general-metabox.php:325
1385
msgid "Add `rel` link tags to posts and pages?"
1386
msgstr ""
1387
1388
#. translators: the backticks are Markdown! Preserve them as-is!
1389
#: inc/views/admin/metaboxes/general-metabox.php:336
1390
msgid "Add `rel` link tags to archives?"
1391
msgstr ""
1392
1393
#. translators: the backticks are Markdown! Preserve them as-is!
1394
#: inc/views/admin/metaboxes/general-metabox.php:347
1395
msgid "Add `rel` link tags to the homepage?"
1396
msgstr ""
1420
msgstr ""
1421
1422
#: inc/views/admin/metaboxes/general-metabox.php:420
1423
+ #: inc/views/admin/metaboxes/robots-metabox.php:325
1424
msgid "Post Type Settings"
1425
msgstr ""
1426
1441
msgstr ""
1442
1443
#: inc/views/admin/metaboxes/general-metabox.php:431
1444
+ #: inc/views/admin/metaboxes/robots-metabox.php:327
1445
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."
1446
msgstr ""
1447
1454
msgstr ""
1455
1456
#: inc/views/admin/metaboxes/homepage-metabox.php:32
1457
+ #: inc/views/admin/metaboxes/robots-metabox.php:54
1458
#: inc/views/admin/metaboxes/sitemaps-metabox.php:20
1459
#: inc/views/admin/metaboxes/social-metabox.php:20
1460
#: inc/views/admin/metaboxes/title-metabox.php:57
1499
msgstr ""
1500
1501
#. translators: %s = Homepage URL markdown
1502
#: inc/views/admin/metaboxes/homepage-metabox.php:127
1503
#: inc/views/admin/metaboxes/homepage-metabox.php:177
1504
msgid "A plugin has been detected that suggests to maintain this option on the [homepage](%s)."
1593
msgstr ""
1594
1595
#. translators: the backticks are Markdown! Preserve them as-is!
1596
#: inc/views/admin/metaboxes/homepage-metabox.php:437
1597
msgid "Apply `noindex` to the homepage?"
1598
msgstr ""
1602
msgstr ""
1603
1604
#. translators: the backticks are Markdown! Preserve them as-is!
1605
#: inc/views/admin/metaboxes/homepage-metabox.php:453
1606
msgid "Apply `nofollow` to the homepage?"
1607
msgstr ""
1611
msgstr ""
1612
1613
#. translators: the backticks are Markdown! Preserve them as-is!
1614
#: inc/views/admin/metaboxes/homepage-metabox.php:469
1615
msgid "Apply `noarchive` to the homepage?"
1616
msgstr ""
1625
msgstr ""
1626
1627
#. translators: %s = Homepage URL markdown
1628
#: inc/views/admin/metaboxes/homepage-metabox.php:511
1629
msgid "Note: These options may be overwritten by the [page settings](%s)."
1630
msgstr ""
1638
msgstr ""
1639
1640
#. translators: the backticks are Markdown! Preserve them as-is!
1641
#: inc/views/admin/metaboxes/homepage-metabox.php:533
1642
msgid "Apply `noindex` to every second or later page on the homepage?"
1643
msgstr ""
1644
1645
+ #: inc/views/admin/metaboxes/robots-metabox.php:24
1646
msgid "Category archives"
1647
msgstr ""
1648
1649
+ #: inc/views/admin/metaboxes/robots-metabox.php:25
1650
msgid "Tag archives"
1651
msgstr ""
1652
1653
+ #: inc/views/admin/metaboxes/robots-metabox.php:26
1654
msgid "Author pages"
1655
msgstr ""
1656
1657
+ #: inc/views/admin/metaboxes/robots-metabox.php:27
1658
msgid "Date archives"
1659
msgstr ""
1660
1661
+ #: inc/views/admin/metaboxes/robots-metabox.php:28
1662
msgid "Search pages"
1663
msgstr ""
1664
1665
+ #: inc/views/admin/metaboxes/robots-metabox.php:30
1666
msgctxt "...for the entire site"
1667
msgid "the entire site"
1668
msgstr ""
1669
1670
+ #: inc/views/admin/metaboxes/robots-metabox.php:40
1671
msgid "These options most likely prevent indexing of the selected archives and pages. If you enable this, the selected archives or pages will urge to be removed from search engine results pages."
1672
msgstr ""
1673
1674
+ #: inc/views/admin/metaboxes/robots-metabox.php:44
1675
msgid "These options most likely prevent links from being followed on the selected archives and pages. If you enable this, the selected archives or pages in-page links will gain no SEO value, including your internal links."
1676
msgstr ""
1677
1678
+ #: inc/views/admin/metaboxes/robots-metabox.php:48
1679
msgid "These options most likely prevent caching of the selected archives and pages. If you enable this, bots are urged not create a cached copy of the selected archives or pages."
1680
msgstr ""
1681
1682
+ #: inc/views/admin/metaboxes/robots-metabox.php:93
1683
msgid "Advanced Query Protection"
1684
msgstr ""
1685
1686
+ #: inc/views/admin/metaboxes/robots-metabox.php:95
1687
msgid "Some URL queries can cause WordPress to show faux archives. When search engines spot these, they will crawl and index them, which may cause a drop in ranking. Advanced query protection will prevent robots from indexing these archives."
1688
msgstr ""
1689
1690
+ #: inc/views/admin/metaboxes/robots-metabox.php:100
1691
msgid "Enable advanced query protection?"
1692
msgstr ""
1693
1694
+ #: inc/views/admin/metaboxes/robots-metabox.php:109
1695
msgid "Paginated Archive Settings"
1696
msgstr ""
1697
1698
+ #: inc/views/admin/metaboxes/robots-metabox.php:111
1699
msgid "Indexing the second or later page of any archive might cause duplication errors. Search engines look down upon them; therefore, it's recommended to disable indexing of those pages."
1700
msgstr ""
1701
1702
#. translators: the backticks are Markdown! Preserve them as-is!
1703
+ #: inc/views/admin/metaboxes/robots-metabox.php:118
1704
msgid "Apply `noindex` to every second or later archive page?"
1705
msgstr ""
1706
1707
+ #: inc/views/admin/metaboxes/robots-metabox.php:129
1708
msgid "Copyright Directive Settings"
1709
msgstr ""
1710
1711
+ #: inc/views/admin/metaboxes/robots-metabox.php:131
1712
msgid "Some search engines allow you to control copyright directives on the content they aggregate. It's best to allow some content to be taken by these aggregators, as that can improve contextualized exposure via snippets and previews. When left unspecified, regional regulations may apply. It is up to the aggregator to honor these requests."
1713
msgstr ""
1714
1715
+ #: inc/views/admin/metaboxes/robots-metabox.php:136
1716
msgid "Specify aggregator copyright compliance directives?"
1717
msgstr ""
1718
1719
+ #: inc/views/admin/metaboxes/robots-metabox.php:144
1720
msgid "Unlimited"
1721
msgstr ""
1722
1723
+ #: inc/views/admin/metaboxes/robots-metabox.php:145
1724
msgctxt "quanity: zero"
1725
msgid "None, disallow snippet"
1726
msgstr ""
1727
1728
#. translators: %d = number
1729
+ #: inc/views/admin/metaboxes/robots-metabox.php:149
1730
msgid "%d character"
1731
msgid_plural "%d characters"
1732
msgstr[0] ""
1733
msgstr[1] ""
1734
1735
+ #: inc/views/admin/metaboxes/robots-metabox.php:155
1736
+ #: inc/views/admin/metaboxes/robots-metabox.php:241
1737
msgid "Standard directive"
1738
msgstr ""
1739
1740
+ #: inc/views/admin/metaboxes/robots-metabox.php:156
1741
+ #: inc/views/admin/metaboxes/robots-metabox.php:242
1742
msgid "Granular directive"
1743
msgstr ""
1744
1745
+ #: inc/views/admin/metaboxes/robots-metabox.php:179
1746
msgid "Maximum text snippet length"
1747
msgstr ""
1748
1749
+ #: inc/views/admin/metaboxes/robots-metabox.php:183
1750
msgid "This may limit the text snippet length for all pages on this site."
1751
msgstr ""
1752
1753
+ #: inc/views/admin/metaboxes/robots-metabox.php:187
1754
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."
1755
msgstr ""
1756
1757
+ #: inc/views/admin/metaboxes/robots-metabox.php:196
1758
msgctxt "quanity: zero"
1759
msgid "None, disallow preview"
1760
msgstr ""
1761
1762
+ #: inc/views/admin/metaboxes/robots-metabox.php:197
1763
msgid "Thumbnail or standard size"
1764
msgstr ""
1765
1766
+ #: inc/views/admin/metaboxes/robots-metabox.php:198
1767
msgid "Large or full size"
1768
msgstr ""
1769
1770
+ #: inc/views/admin/metaboxes/robots-metabox.php:216
1771
msgid "Maximum image preview size"
1772
msgstr ""
1773
1774
+ #: inc/views/admin/metaboxes/robots-metabox.php:220
1775
msgid "This may limit the image preview size for all images from this site."
1776
msgstr ""
1777
1778
+ #: inc/views/admin/metaboxes/robots-metabox.php:230
1779
msgid "Full video preview"
1780
msgstr ""
1781
1782
+ #: inc/views/admin/metaboxes/robots-metabox.php:231
1783
msgctxt "quanity: zero"
1784
msgid "None, still image only"
1785
msgstr ""
1786
1787
#. translators: %d = number
1788
+ #: inc/views/admin/metaboxes/robots-metabox.php:235
1789
msgid "%d second"
1790