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を設定する方法 を紹介します。
Canonicalとは?
Canonicalとは、URLの正規化を行うためのメタタグのことです。ページの内容が重複・類似していたりしている場合に、検索エンジンからの評価が分散しないよう、回避することができます。
例えば、ECサイトで販売している商品の、色やサイズが違うだけのページがいくつもある場合などに、canonicalタグで正規化することで、SEOに有利になります。
重複ページの中から最も大切なURLだけを検索インデックスに登録して、コピーコンテンツとみなされないようにしましょう。
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設定からって感じですね。
おつかれさまでした。