WordPress Canonical URLを全ページに設定する方法
WordPressで全ページに「canonical」を設定する方法です。
WordPressの機能では全ページに「canonical」を設定できません。独自でPHPを書くか、プラグインを導入するかの2択です。
今回、自前で「canonical」を設定をしようと思ったきっかけは、「All in One SEO Pack」というプラグインを停止しようと思ったからです。
「All in One SEO」は、とても高機能で優秀なプラグインではありますが、正直、バージョン4.0.0以降は使いにくくなったし、脆弱性も確認されたし、謎のログがテーブルに膨大に蓄積されるし、なんといっても遅いし。近頃のSEOは、表示速度に重きを置いていることもあり、いっそのこと停止して独自実装してしまおうと考えました。
ここでは WordPressで全ページにcanonicalを設定する方法 を紹介します。
Sponsored Links
Canonicalとは?
Canonicalとは、URLの正規化を行うためのメタタグのことです。ページの内容が重複・類似していたりしている場合に、検索エンジンからの評価が分散しないよう、回避することができます。
例えば、ECサイトで販売している商品の、色やサイズが違うだけのページがいくつもある場合などに、canonicalタグで正規化することで、SEOに有利になります。
重複ページの中から最も大切なURLだけを検索インデックスに登録して、コピーコンテンツとみなされないようにしましょう。
Sponsored Links
functions.phpにCanonical URLを出力するコードを記述する
下記のコードをfunction.phpへ追記します。
/** * canonical設定 */ remove_action('wp_head', 'rel_canonical'); add_action( 'wp_head', 'add_my_canonical' ); function add_my_canonical() { $canonical = null; if( is_home() || is_front_page() ) { // トップページ $canonical = home_url('/'); } elseif ( is_post_type_archive() ) { // カスタム投稿タイプ $canonical = get_post_type_archive_link( get_query_var('post_type') ); } elseif ( is_tax() ) { // タクソノミー $canonical = get_term_link(get_queried_object()->term_id); } elseif ( is_category() ) { // カテゴリー $canonical = get_category_link( get_query_var('cat') ); } elseif ( is_tag() ) { // タグ $canonical = get_tag_link(get_queried_object()->term_id); } elseif ( is_search() ) { // 検索ページ $canonical = get_search_link(); } elseif ( is_page() || is_single() ) { // 固定ページ・シングルページ $canonical = get_permalink(); } else{ // その他のページ $canonical = home_url('/'); } echo '<link rel="canonical" href="'.$canonical.'">'."\n"; }
カスタム投稿タイプとタクソノミーは、一般的なブログ運営されている方には不要かもしれないけど、個人的にはメッチャ使っているので。
ページを表示すれば下記のタグが追記されます。ソースチェックしてみてください。
<link rel="canonical" href="ページURL">
まとめ
WordPressで全ページにcanonicalを設定する方法を紹介しました。
とりあえず「All in One SEO Pack」を停止して、これまで使っていた機能を全て自前でコード書こうと思っています。
他にも「title」「description」「keyword」の書き換えとか、いろいろあるわけだけれども、とりあえずはcanonical設定からって感じですね。
おつかれさまでした。
Sponsored Links