Customize Yoast Canonical URL Programmatically

When you install the Yoast plugin for WordPress, you will find that it will automatically generate the canonical tag for you on all web pages. For the majority of installs, you will never need to worry about this. The canonical URL is pretty much always going to be the same URL as the page. This exception will often occur with AMP HTML pages, but any good plugin should handle this for you automatically.

Recently I found an issue where a site was including some unique, custom content and proper listings on the archive pages on WordPress. The default behaviour of Yoast was to set the canonical URL of all archive pages for categories, post types and tags to the base page. This means that any page after page 1 will not get indexed by Google and you will find you get an error in Google Search Console to tell you the canonical URL does not match a URL that you have provided in the sitemap. Strange behaviour considering Yoast also generated the sitemap for this website. None the less, I needed a solution.

Using PHP Code to Change Canonical Tag

The code snippet below can be added to a custom plugin or into a theme. It will use a hook built into the Yoast plugin that will check to see if the “pg” query value exists and if it does, it will make sure that it adds it to the canonical URL before the tag is written to the page. The call to htmlspecialchars is just for safety to make sure that anyone adding dangerous values in the URL for PG will not be able to hijack your site and do some bad stuff.

add_filter('wpseo_canonical' , 'custom_change_canonical', 10,1);
function custom_change_canonical($url)
{
	global $post;
	if(isset($_GET['pg']))
	{
		return $url . "?pg=" . htmlspecialchars($_GET['pg']);
	}	
   return $url;
}

Related Articles

Related Questions

Did I Just Hit the Jackpot with My Ryzen 9 Build or Am I Just Asking for Trouble?

I recently upgraded my PC from an Intel Core i7-14700K due to issues like blue screens and random crashes. I made the jump to...

Why does my TCL TV keep freezing and going black?

I'm having an issue with my TCL 55P615I TV. It freezes up while I'm watching it, and then the screen goes black. I can...

How do I set up a Docker Compose environment with CLI tools?

Hey everyone! I'm a developer looking to tidy up my workspace, and I want to create a Docker Compose setup that includes all the...

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Latest Tools

Scavenger Hunt Team Randomizer

Planning a scavenger hunt and need to split participants into random teams? Whether you're organizing a school activity, a corporate team-building event, or a...

File Hash Generator Online – Get Instant MD5 and SHA-256 Hashes

Whether you are validating downloads, checking for corruption, or comparing files for duplicates, having a fast and secure way to generate file hashes is...

Visual CSS Editor for Modern Glass UI Effects

Modern UI design is all about clean, layered aesthetics, and few styles deliver this better than glassmorphism. If you're designing sleek user interfaces and...

Fast and Accurate Tap BPM Counter – Free Web Tool

Whether you're producing music, DJing live, or just figuring out the tempo of a song, knowing the BPM (beats per minute) can be critical....

Glassmorphism CSS Generator with Live Preview

Glassmorphism is one of the most visually striking design trends in modern UI. Its soft, frosted-glass effect adds depth and elegance to web interfaces,...

Add Custom Speech and Caption Boxes to Any Image Online

Creating comic-style images used to require complex design tools or specialist software. Whether you're making memes, teaching graphics, social media posts or lighthearted content,...

Latest Posts

Latest Questions