Sounds like the easiest method without having to edit Yoast SEO PHP code directly would be to disable canonicals being handled by Yoast SEO all together.
Disable it like so:
SOURCE
Filter to Disable Canonical URLs
add_filter( 'wpseo_canonical', '__return_false');
Steps to Disabling Yoast Canonicals
You can disable canonical links being added to the HEAD by following these simple steps:
- Login to WordPress
- Hover over Appearance
- Click Editor
- Find Theme Functions (functions.php)
- Add the code found above to a new link within your functions.php
Then I'd opt to use canonicals without having to use a WordPress plugin, like so:
SOURCE
Universal PHP Code for Canonical URLS
Below is the code that you need to add within the head of your theme template:
<link rel="canonical" href="https://www.bybe.net<?php echo $url=strtok($_SERVER["REQUEST_URI"],'?');?>">
Obviously you will need to replace bybe.net with your own domain.
Adding canonical Links in WordPress
Below are a few easy steps that will have you up and running with WordPress canonical URLS in no time at all, and without a plugin.
- Login to WordPress
- Hover over Appearance
- Click Editor
- Find Theme Header (header.php)
- Add the Universal PHP Code for Canonical URLS found above within the HEAD section of your theme header file.
The PHP code $url=strtok($_SERVER["REQUEST_URI"],'?');
will get the relative path so you only need to replace the domain before it, then you are set to go.
Should you or anyone else stubble across this post and want to have a few pages internal canonicals and a few externals then this can be be done using:
- is_page()
- is_single(), not to be confused with a Facebook relationship status, it means post. You should also make good use of IF and ELSE, should you have multiple pages or posts, ideally you should use esc_url() whenever possible.