SEOPress - Version 3.6.4

Version Description

  • NEW Add 'seopress_bot_query' hook to filter the broken links checker query
  • INFO Relevanssi users: posts marked as noindex are no longer indexed by default (Relevanssi 4.3.2 required)
  • INFO Updated Chart JS library
  • FIX primary category in XML sitemaps
  • FIX meta robots / canonical tags for static blog page
  • FIX Breadcrumbs with before / after HTML hooks (thanks to @wpchannel)
Download this release

Release Info

Developer rainbowgeek
Plugin Icon 128x128 SEOPress
Version 3.6.4
Comparing to
See all releases

Code changes from version 3.6.3 to 3.6.4

inc/functions/options-titles-metas.php CHANGED
@@ -794,6 +794,8 @@ function seopress_titles_noindex_bypass() {
794
  $seopress_titles_noindex = seopress_titles_single_cpt_noindex_option();
795
  } elseif (is_singular() && seopress_titles_noindex_post_option() ) { //Single CPT Metaboxe
796
  $seopress_titles_noindex = seopress_titles_noindex_post_option();
 
 
797
  } elseif (is_post_type_archive() && seopress_titles_archive_cpt_noindex_option() ) { //IS POST TYPE ARCHIVE
798
  $seopress_titles_noindex = seopress_titles_archive_cpt_noindex_option();
799
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_noindex_option()) { //IS TAX
@@ -899,6 +901,8 @@ function seopress_titles_nofollow_bypass() {
899
  $seopress_titles_nofollow = seopress_titles_single_cpt_nofollow_option();
900
  } elseif (is_singular() && seopress_titles_nofollow_post_option() ) { //Single CPT Metaboxe
901
  $seopress_titles_nofollow = seopress_titles_nofollow_post_option();
 
 
902
  } elseif (is_post_type_archive() && seopress_titles_archive_cpt_nofollow_option() ) { //IS POST TYPE ARCHIVE
903
  $seopress_titles_nofollow = seopress_titles_archive_cpt_nofollow_option();
904
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_nofollow_option()) { //IS TAX
@@ -1008,6 +1012,8 @@ function seopress_titles_noodp_bypass() {
1008
  }
1009
  elseif (is_singular() && seopress_titles_noodp_post_option()) {
1010
  return seopress_titles_noodp_post_option();
 
 
1011
  } elseif (is_tax() || is_category() || is_tag()) {
1012
  if (get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_odp',true) == 'yes') {
1013
  return get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_odp',true);
@@ -1037,9 +1043,10 @@ function seopress_titles_noarchive_post_option() {
1037
  function seopress_titles_noarchive_bypass() {
1038
  if (seopress_titles_noarchive_option()) {
1039
  return seopress_titles_noarchive_option();
1040
- }
1041
- elseif (is_singular() && seopress_titles_noarchive_post_option()) {
1042
  return seopress_titles_noarchive_post_option();
 
 
1043
  } elseif (is_tax() || is_category() || is_tag()) {
1044
  if (get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_archive',true) == 'yes') {
1045
  return get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_archive',true);
@@ -1053,9 +1060,9 @@ function seopress_titles_nosnippet_option() {
1053
  if ( ! empty ( $seopress_titles_nosnippet_option ) ) {
1054
  foreach ($seopress_titles_nosnippet_option as $key => $seopress_titles_nosnippet_value)
1055
  $options[$key] = $seopress_titles_nosnippet_value;
1056
- if (isset($seopress_titles_nosnippet_option['seopress_titles_nosnippet'])) {
1057
- return $seopress_titles_nosnippet_option['seopress_titles_nosnippet'];
1058
- }
1059
  }
1060
  };
1061
 
@@ -1069,9 +1076,10 @@ function seopress_titles_nosnippet_post_option() {
1069
  function seopress_titles_nosnippet_bypass() {
1070
  if (seopress_titles_nosnippet_option()) {
1071
  return seopress_titles_nosnippet_option();
1072
- }
1073
- elseif (is_singular() && seopress_titles_nosnippet_post_option()) {
1074
  return seopress_titles_nosnippet_post_option();
 
 
1075
  } elseif (is_tax() || is_category() || is_tag()) {
1076
  if (get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_snippet',true) == 'yes') {
1077
  return get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_snippet',true);
@@ -1252,6 +1260,16 @@ if (function_exists('seopress_titles_noindex_bypass') && seopress_titles_noindex
1252
  echo $seopress_titles_canonical."\n";
1253
  }
1254
  add_action( 'wp_head', 'seopress_titles_canonical_post_hook', 1 );
 
 
 
 
 
 
 
 
 
 
1255
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_canonical_term_option()) { //CUSTOM TERM CANONICAL
1256
  function seopress_titles_canonical_term_hook() {
1257
  $seopress_titles_canonical = '<link rel="canonical" href="'.htmlspecialchars(urldecode(seopress_titles_canonical_term_option())).'" />';
794
  $seopress_titles_noindex = seopress_titles_single_cpt_noindex_option();
795
  } elseif (is_singular() && seopress_titles_noindex_post_option() ) { //Single CPT Metaboxe
796
  $seopress_titles_noindex = seopress_titles_noindex_post_option();
797
+ } elseif ( is_home() && get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_index',true) !=''){ //BLOG PAGE
798
+ $seopress_titles_noindex = get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_index',true);
799
  } elseif (is_post_type_archive() && seopress_titles_archive_cpt_noindex_option() ) { //IS POST TYPE ARCHIVE
800
  $seopress_titles_noindex = seopress_titles_archive_cpt_noindex_option();
801
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_noindex_option()) { //IS TAX
901
  $seopress_titles_nofollow = seopress_titles_single_cpt_nofollow_option();
902
  } elseif (is_singular() && seopress_titles_nofollow_post_option() ) { //Single CPT Metaboxe
903
  $seopress_titles_nofollow = seopress_titles_nofollow_post_option();
904
+ } elseif ( is_home() && get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_follow',true) !=''){ //BLOG PAGE
905
+ $seopress_titles_nofollow = get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_follow',true);
906
  } elseif (is_post_type_archive() && seopress_titles_archive_cpt_nofollow_option() ) { //IS POST TYPE ARCHIVE
907
  $seopress_titles_nofollow = seopress_titles_archive_cpt_nofollow_option();
908
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_tax_nofollow_option()) { //IS TAX
1012
  }
1013
  elseif (is_singular() && seopress_titles_noodp_post_option()) {
1014
  return seopress_titles_noodp_post_option();
1015
+ } elseif ( is_home() && get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_odp',true) !=''){ //BLOG PAGE
1016
+ return get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_odp',true);
1017
  } elseif (is_tax() || is_category() || is_tag()) {
1018
  if (get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_odp',true) == 'yes') {
1019
  return get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_odp',true);
1043
  function seopress_titles_noarchive_bypass() {
1044
  if (seopress_titles_noarchive_option()) {
1045
  return seopress_titles_noarchive_option();
1046
+ } elseif (is_singular() && seopress_titles_noarchive_post_option()) {
 
1047
  return seopress_titles_noarchive_post_option();
1048
+ } elseif ( is_home() && get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_archive',true) !=''){ //BLOG PAGE
1049
+ return get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_archive',true);
1050
  } elseif (is_tax() || is_category() || is_tag()) {
1051
  if (get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_archive',true) == 'yes') {
1052
  return get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_archive',true);
1060
  if ( ! empty ( $seopress_titles_nosnippet_option ) ) {
1061
  foreach ($seopress_titles_nosnippet_option as $key => $seopress_titles_nosnippet_value)
1062
  $options[$key] = $seopress_titles_nosnippet_value;
1063
+ if (isset($seopress_titles_nosnippet_option['seopress_titles_nosnippet'])) {
1064
+ return $seopress_titles_nosnippet_option['seopress_titles_nosnippet'];
1065
+ }
1066
  }
1067
  };
1068
 
1076
  function seopress_titles_nosnippet_bypass() {
1077
  if (seopress_titles_nosnippet_option()) {
1078
  return seopress_titles_nosnippet_option();
1079
+ } elseif (is_singular() && seopress_titles_nosnippet_post_option()) {
 
1080
  return seopress_titles_nosnippet_post_option();
1081
+ } elseif ( is_home() && get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_snippet',true) !=''){ //BLOG PAGE
1082
+ return get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_snippet',true);
1083
  } elseif (is_tax() || is_category() || is_tag()) {
1084
  if (get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_snippet',true) == 'yes') {
1085
  return get_term_meta(get_queried_object()->{'term_id'},'_seopress_robots_snippet',true);
1260
  echo $seopress_titles_canonical."\n";
1261
  }
1262
  add_action( 'wp_head', 'seopress_titles_canonical_post_hook', 1 );
1263
+ } elseif ( is_home() && get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_canonical',true) !=''){ //BLOG PAGE
1264
+ function seopress_titles_canonical_post_hook() {
1265
+ $seopress_titles_canonical = '<link rel="canonical" href="'.htmlspecialchars(urldecode(get_post_meta(get_option( 'page_for_posts' ),'_seopress_robots_canonical',true))).'" />';
1266
+ //Hook on post canonical URL - 'seopress_titles_canonical'
1267
+ if (has_filter('seopress_titles_canonical')) {
1268
+ $seopress_titles_canonical = apply_filters('seopress_titles_canonical', $seopress_titles_canonical);
1269
+ }
1270
+ echo $seopress_titles_canonical."\n";
1271
+ }
1272
+ add_action( 'wp_head', 'seopress_titles_canonical_post_hook', 1 );
1273
  } elseif ((is_tax() || is_category() || is_tag()) && seopress_titles_canonical_term_option()) { //CUSTOM TERM CANONICAL
1274
  function seopress_titles_canonical_term_hook() {
1275
  $seopress_titles_canonical = '<link rel="canonical" href="'.htmlspecialchars(urldecode(seopress_titles_canonical_term_option())).'" />';
inc/functions/sitemap/template-xml-sitemaps-single.php CHANGED
@@ -4,6 +4,9 @@ defined( 'ABSPATH' ) or die( 'Please don&rsquo;t call the plugin directly. Thank
4
  //XML
5
  Header('Content-type: text/xml');
6
 
 
 
 
7
  //WPML
8
  function seopress_remove_wpml_home_url_filter( $home_url, $url, $path, $orig_scheme, $blog_id ) {
9
  return $url;
4
  //XML
5
  Header('Content-type: text/xml');
6
 
7
+ //Remove primary category
8
+ remove_filter( 'post_link_category', 'seopress_titles_primary_cat_hook', 10, 3 );
9
+
10
  //WPML
11
  function seopress_remove_wpml_home_url_filter( $home_url, $url, $path, $orig_scheme, $blog_id ) {
12
  return $url;
readme.txt CHANGED
@@ -6,7 +6,7 @@ Tags: SEO, XML sitemap, meta title, open graph, content analysis, knowledge grap
6
  Requires at least: 4.6+
7
  Tested up to: 5.2
8
  Requires PHP: 5.6
9
- Stable tag: 3.6.3
10
  License: GPLv2 or later
11
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
12
 
@@ -219,6 +219,13 @@ Any questions? Visit our website <a href="https://www.seopress.org?utm_source=w.
219
  60. Installation Wizard
220
 
221
  == Changelog ==
 
 
 
 
 
 
 
222
  = 3.6.3 =
223
  * INFO Improve code quality
224
  * INFO Improve security
6
  Requires at least: 4.6+
7
  Tested up to: 5.2
8
  Requires PHP: 5.6
9
+ Stable tag: 3.6.4
10
  License: GPLv2 or later
11
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
12
 
219
  60. Installation Wizard
220
 
221
  == Changelog ==
222
+ = 3.6.4 =
223
+ * NEW Add 'seopress_bot_query' hook to filter the broken links checker query
224
+ * INFO Relevanssi users: posts marked as noindex are no longer indexed by default (Relevanssi 4.3.2 required)
225
+ * INFO Updated Chart JS library
226
+ * FIX primary category in XML sitemaps
227
+ * FIX meta robots / canonical tags for static blog page
228
+ * FIX Breadcrumbs with before / after HTML hooks (thanks to @wpchannel)
229
  = 3.6.3 =
230
  * INFO Improve code quality
231
  * INFO Improve security
seopress.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: SEOPress
4
  Plugin URI: https://www.seopress.org/
5
  Description: One of the best SEO plugins for WordPress.
6
- Version: 3.6.3
7
  Author: Benjamin Denis
8
  Author URI: https://www.seopress.org/
9
  License: GPLv2
@@ -53,7 +53,7 @@ register_deactivation_hook(__FILE__, 'seopress_deactivation');
53
  ///////////////////////////////////////////////////////////////////////////////////////////////////
54
  //Define
55
  ///////////////////////////////////////////////////////////////////////////////////////////////////
56
- define( 'SEOPRESS_VERSION', '3.6.3' );
57
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
58
 
59
  ///////////////////////////////////////////////////////////////////////////////////////////////////
3
  Plugin Name: SEOPress
4
  Plugin URI: https://www.seopress.org/
5
  Description: One of the best SEO plugins for WordPress.
6
+ Version: 3.6.4
7
  Author: Benjamin Denis
8
  Author URI: https://www.seopress.org/
9
  License: GPLv2
53
  ///////////////////////////////////////////////////////////////////////////////////////////////////
54
  //Define
55
  ///////////////////////////////////////////////////////////////////////////////////////////////////
56
+ define( 'SEOPRESS_VERSION', '3.6.4' );
57
  define( 'SEOPRESS_AUTHOR', 'Benjamin Denis' );
58
 
59
  ///////////////////////////////////////////////////////////////////////////////////////////////////