David
David

Reputation: 36454

Removing rel canonical added by Yoast SEO plugin

Couldn't find a solution after a quick google so thought i'd pop a quick post on here.

Trying to remove a automatically added rel=canonical link (which is added by Wordpress SEO plugin - by Yoast).

I actually want google to crawl each of the different subs even though it may not move away from the parent page.

Upvotes: 13

Views: 26686

Answers (5)

Alx
Alx

Reputation: 11

Newer versions of Yoast ingnored this code. Tested on Yoast 15.0

// Disable Canonical for - ALL pages
function remove_canonical() {
    add_filter( 'wpseo_canonical', '__return_false',  10, 1 );
}
add_action('wp', 'remove_canonical');

I fixed it with a filter priority value. Here's working code:

// Disable Canonical for - ALL pages
function remove_canonical() {
    add_filter( 'wpseo_canonical', '__return_false');
}
add_action('wp', 'remove_canonical', -19999);

Because new Yoast versions (like 15.0) use the negative priority to handle wpseo_head in the plugin file front-end-integration.php:

\add_action( 'wpseo_head', [ $this, 'present_head' ], -9999 );

Upvotes: 1

moonvader
moonvader

Reputation: 21131

remove_action('wp_head', 'rel_canonical');

Upvotes: 1

maheshwaghmare
maheshwaghmare

Reputation: 2192

You can also use this in wordpress conditional tags

Refer: https://codex.wordpress.org/Conditional_Tags

// Remove - Canonical for - [Search - Page]
function remove_canonical() {

    // Disable for 'search' page
    if ( is_search() ) {
        add_filter( 'wpseo_canonical', '__return_false',  10, 1 );
    }
}
add_action('wp', 'remove_canonical');

Remove canonical for ALL pages.

// Disable Canonical for - ALL pages
function remove_canonical() {
    add_filter( 'wpseo_canonical', '__return_false',  10, 1 );
}
add_action('wp', 'remove_canonical');

Upvotes: 13

john Smith
john Smith

Reputation: 17936

most likely the canonical is not generated by yoast, there is a wordpress inbuilt function you can prevent it by adding this to your theme´s functions.php

remove_action('wp_head', 'rel_canonical');

Upvotes: 2

nautilus7
nautilus7

Reputation: 419

rel="canonical" has nothing to do with crawling. It has to do with indexing and prevents the same page from indexing twice or more.

Anyway, if you still want to do this you can do it by adding this code to your functions.php:

add_filter( 'wpseo_canonical', '__return_false' );

Source: https://yoast.com/wordpress/plugins/seo/api/

Upvotes: 19

Related Questions