WordPress人気プラグイン「WordPress SEO」で自動生成されるcanonicalのURLを変更する方法

WordPressで構築したサイトのSEO施策などに使われるプラグイン「WordPress SEO」ですが、最近あるサイトで「特定のページのcanonicalのURLを変更したいな~」と思いました。

少し調べると、プラグインの開発者がAPIのドキュメント「WordPress SEO API Docs」を公開されていたので読んだら・・・どうやらできそう。というわけでやりました。

例:「inquiry」ページのcanonicalのURLを変更する

ご使用のテーマフォルダ内にある「functions.php」に追記します。

function custom_canonical($url) {
 if( is_page('inquiry') ) { //「inquiry」ページの場合
  return site_url( '/xxx/' ); //site_urlなどで変更したいURLを指定
 } else {
  return $url; //「inquiry」ページ以外はそのまま
 }
}
add_filter( 'wpseo_canonical', 'custom_canonical' )

上記のコードは「canonicalのURLが変更できるよ!」というのをなるべく短く書きたかっただけです。「is_page(‘inquiry’)」でinquiryページの時はcanonicalのURLを変更するように書いてあります。で、その他のページはプラグインから生成されるURLそのままです。

以上の処理をフィルターフック「wpseo_canonical」にフックさせています。状況に合わせてカスタマイズすればいいですね。

コードは「How To Manually Remove WordPress SEO on Template Page」を参考にしました。ありがとうございます。

canonicalの参考リンク

使用する URL を rel="canonical" リンク要素で指定する

ところで、canonicalの指定って私はあんまり知識がないので結構理解が難しいです。早く扱いに慣れたいもんですね。

おまけ:canonicalを出力しない

ドキュメント「WordPress SEO API Docs」中にあるサンプルコードでは、プラグイン側で生成される「canonicalを出力させない方法」が紹介されています。もともとはこういう使い方をするために用意されたのかな。

ご使用のテーマフォルダ内にある「functions.php」に追記します。

add_filter( 'wpseo_canonical', '__return_false' );

この方法を使ってプラグイン側のcanonicanlの出力をすべて止めて、独自でcanonicalを指定する方法でもいいかな。やり方はいろいろあるとは思いました。

まとめ

というわけで、プラグインから自動生成されるcanonicalのURLを変更できます。ところで、他のサンプルコードを確認すると、やれることが多い・・・今後、「WordPress SEO」プラグインを使っていろいろとカスタマイズしたいときには参考にしようと思います。

著者:bouya Imamura