diff --git a/aioseop_class.php b/aioseop_class.php
index c895c4992..39444c315 100644
--- a/aioseop_class.php
+++ b/aioseop_class.php
@@ -2054,25 +2054,61 @@ function wp_head() {
if ( !empty( $prev ) ) $meta_string .= "\n";
if ( !empty( $next ) ) $meta_string .= "\n";
if ( $meta_string != null ) echo "$meta_string\n";
+
// handle canonical links
$show_page = true;
if ( !empty( $aioseop_options["aiosp_no_paged_canonical_links"] ) ) $show_page = false;
- if ( $aioseop_options['aiosp_can'] ) {
- $url = '';
- if ( !empty( $aioseop_options['aiosp_customize_canonical_links'] ) && !empty( $opts['aiosp_custom_link'] ) ) $url = $opts['aiosp_custom_link'];
- if ( empty( $url ) )
- $url = $this->aiosp_mrt_get_url( $wp_query, $show_page );
- $url = apply_filters( 'aioseop_canonical_url', $url );
- if ( !empty( $url ) )
- echo ''."\n";
+ if ( $aioseop_options['aiosp_can'] ) {
+ $url = '';
+ if ( ! empty( $aioseop_options['aiosp_customize_canonical_links'] ) && ! empty( $opts['aiosp_custom_link'] ) ) {
+ $url = $opts['aiosp_custom_link'];
}
- do_action( 'aioseop_modules_wp_head' );
- if ( AIOSEOPPRO ) {
- echo "\n";
- } else{
- echo "\n";
+ if ( empty( $url ) ) {
+ $url = $this->aiosp_mrt_get_url( $wp_query, $show_page );
}
+
+ $url = $this->validate_url_scheme( $url );
+
+ $url = apply_filters( 'aioseop_canonical_url', $url );
+ if ( ! empty( $url ) ) {
+ echo '' . "\n";
+ }
+ }
+ do_action( 'aioseop_modules_wp_head' );
+ if ( AIOSEOPPRO ) {
+ echo "\n";
+ } else {
+ echo "\n";
+ }
+ }
+
+ /**
+ *
+ * Validates whether the url should be https or http.
+ *
+ * Mainly we're just using this for canonical URLS, but eventually it may be useful for other things
+ *
+ * @param $url
+ *
+ * @return string $url
+ *
+ * @since
+ */
+ function validate_url_scheme( $url ) {
+
+ //TODO we should check for the site setting in the case of auto
+
+ global $aioseop_options;
+
+ if ( $aioseop_options['aiosp_can_set_protocol'] == 'http' ) {
+ $url = preg_replace( "/^https:/i", "http:", $url );
+ }
+ if ( $aioseop_options['aiosp_can_set_protocol'] == 'https' ) {
+ $url = preg_replace( "/^http:/i", "https:", $url );
+ }
+
+ return $url;
}
function override_options( $options, $location, $settings ) {
@@ -2337,22 +2373,29 @@ function sitelinks_search_box() {
}
function aiosp_mrt_get_url( $query, $show_page = true ) {
- if ( $query->is_404 || $query->is_search )
+ if ( $query->is_404 || $query->is_search ) {
return false;
- $link = '';
+ }
+ $link = '';
$haspost = count( $query->posts ) > 0;
if ( get_query_var( 'm' ) ) {
$m = preg_replace( '/[^0-9]/', '', get_query_var( 'm' ) );
switch ( $this->strlen( $m ) ) {
- case 4: $link = get_year_link( $m ); break;
- case 6: $link = get_month_link( $this->substr( $m, 0, 4), $this->substr($m, 4, 2 ) ); break;
- case 8: $link = get_day_link( $this->substr( $m, 0, 4 ), $this->substr( $m, 4, 2 ), $this->substr( $m, 6, 2 ) ); break;
- default:
- return false;
- }
- } elseif ( ( $query->is_home && (get_option( 'show_on_front' ) == 'page' ) && ( $pageid = get_option( 'page_for_posts' ) ) ) ) {
+ case 4:
+ $link = get_year_link( $m );
+ break;
+ case 6:
+ $link = get_month_link( $this->substr( $m, 0, 4 ), $this->substr( $m, 4, 2 ) );
+ break;
+ case 8:
+ $link = get_day_link( $this->substr( $m, 0, 4 ), $this->substr( $m, 4, 2 ), $this->substr( $m, 6, 2 ) );
+ break;
+ default:
+ return false;
+ }
+ } elseif ( ( $query->is_home && ( get_option( 'show_on_front' ) == 'page' ) && ( $pageid = get_option( 'page_for_posts' ) ) ) ) {
$link = get_permalink( $pageid );
- } elseif ( is_front_page() || ( $query->is_home && ( get_option( 'show_on_front' ) != 'page' || !get_option( 'page_for_posts' ) ) ) ) {
+ } elseif ( is_front_page() || ( $query->is_home && ( get_option( 'show_on_front' ) != 'page' || ! get_option( 'page_for_posts' ) ) ) ) {
if ( function_exists( 'icl_get_home_url' ) ) {
$link = icl_get_home_url();
} else {
@@ -2363,48 +2406,57 @@ function aiosp_mrt_get_url( $query, $show_page = true ) {
$link = get_permalink( $post->ID );
} elseif ( $query->is_author && $haspost ) {
$author = get_userdata( get_query_var( 'author' ) );
- if ($author === false) return false;
+ if ( $author === false ) {
+ return false;
+ }
$link = get_author_posts_url( $author->ID, $author->user_nicename );
- } elseif ( $query->is_category && $haspost ) {
- $link = get_category_link( get_query_var( 'cat' ) );
+ } elseif ( $query->is_category && $haspost ) {
+ $link = get_category_link( get_query_var( 'cat' ) );
} elseif ( $query->is_tag && $haspost ) {
$tag = get_term_by( 'slug', get_query_var( 'tag' ), 'post_tag' );
- if ( !empty( $tag->term_id ) )
+ if ( ! empty( $tag->term_id ) ) {
$link = get_tag_link( $tag->term_id );
- } elseif ( $query->is_day && $haspost ) {
- $link = get_day_link( get_query_var( 'year' ),
- get_query_var( 'monthnum' ),
- get_query_var( 'day' ) );
- } elseif ( $query->is_month && $haspost ) {
- $link = get_month_link( get_query_var( 'year' ),
- get_query_var( 'monthnum' ) );
- } elseif ( $query->is_year && $haspost ) {
- $link = get_year_link( get_query_var( 'year' ) );
+ }
+ } elseif ( $query->is_day && $haspost ) {
+ $link = get_day_link( get_query_var( 'year' ),
+ get_query_var( 'monthnum' ),
+ get_query_var( 'day' ) );
+ } elseif ( $query->is_month && $haspost ) {
+ $link = get_month_link( get_query_var( 'year' ),
+ get_query_var( 'monthnum' ) );
+ } elseif ( $query->is_year && $haspost ) {
+ $link = get_year_link( get_query_var( 'year' ) );
} elseif ( $query->is_tax && $haspost ) {
$taxonomy = get_query_var( 'taxonomy' );
- $term = get_query_var( 'term' );
- if ( !empty( $term ) )
+ $term = get_query_var( 'term' );
+ if ( ! empty( $term ) ) {
$link = get_term_link( $term, $taxonomy );
- } elseif ( $query->is_archive && function_exists( 'get_post_type_archive_link' ) && ( $post_type = get_query_var( 'post_type' ) ) ) {
- if ( is_array( $post_type ) )
+ }
+ } elseif ( $query->is_archive && function_exists( 'get_post_type_archive_link' ) && ( $post_type = get_query_var( 'post_type' ) ) ) {
+ if ( is_array( $post_type ) ) {
$post_type = reset( $post_type );
+ }
$link = get_post_type_archive_link( $post_type );
- } else {
- return false;
- }
- if ( empty( $link ) || !is_string( $link ) ) return false;
- if ( apply_filters( 'aioseop_canonical_url_pagination', $show_page ) )
+ } else {
+ return false;
+ }
+ if ( empty( $link ) || ! is_string( $link ) ) {
+ return false;
+ }
+ if ( apply_filters( 'aioseop_canonical_url_pagination', $show_page ) ) {
$link = $this->get_paged( $link );
- if ( !empty( $link ) ) {
+ }
+ if ( ! empty( $link ) ) {
global $aioseop_options;
- if ( !empty( $aioseop_options['aiosp_can_set_protocol'] ) && ( $aioseop_options['aiosp_can_set_protocol'] != 'auto' ) ) {
+ if ( ! empty( $aioseop_options['aiosp_can_set_protocol'] ) && ( $aioseop_options['aiosp_can_set_protocol'] != 'auto' ) ) {
if ( $aioseop_options['aiosp_can_set_protocol'] == 'http' ) {
- $link = preg_replace("/^https:/i", "http:", $link );
+ $link = preg_replace( "/^https:/i", "http:", $link );
} elseif ( $aioseop_options['aiosp_can_set_protocol'] == 'https' ) {
- $link = preg_replace("/^http:/i", "https:", $link );
+ $link = preg_replace( "/^http:/i", "https:", $link );
}
}
}
+
return $link;
}