Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wordpress auto-generated "canonical" links - how to add a custom URL parameter?

Does anyone know how to modify the Wordpress canonical links to add a custom URL parameter?

I have a Wordpress site with a page that queries a separate (non-Wordpress) database. I passed the URL parameter "pubID" to display individual books and it is working OK.

Example: http://www.uglyducklingpresse.org/catalog/browse/item/?pubID=63

But the individual book pages are not showing up properly in Google - the ?pubID parameter is stripped out.

I think maybe this is because all the item pages have the same auto-generated "canonical" URL link tag in the source - one with the "pubID" parameter stripped out.

Example: link rel='canonical' href='http://www.uglyducklingpresse.org/catalog/browse/item/'

Is there a way to perhaps edit .htaccess to add a custom URL parameter to Wordpress, so that the parameter is not stripped out by permalinks and the "canonical" links?

Or maybe there's another solution ... Thank you for any ideas!

like image 483
kiko Avatar asked Feb 27 '23 09:02

kiko


1 Answers

You should be able to replace Wordpress's rel_canonical action function with your own function in which (when your conditions are meet) you create a canonical link appending the query string variable. The following should work, although you'll probably need to change the conditions to meet your needs.

remove_action('wp_head', 'rel_canonical');
add_action('wp_head', 'my_rel_canonical');

function my_rel_canonical() {
    if (is_page('item') && isset($_GET['pubID'])) {
        global $post;
        $link = get_permalink($post->ID) . '?pubID=' . absint($_GET['pubID']);
        echo "<link rel='canonical' href='$link' />\n";
    } else {
        rel_canonical();
    }
}
like image 179
Richard M Avatar answered May 08 '23 05:05

Richard M