レビューログのWordPress自作テーマを一から制作しているので、備忘録記事になります。(Facebook ogp、Twitter Cardをプラグイン無しで実装する方法はこちら)
出来るだけプラグインを入れないで自力で実装を行っているのですが、今回はmeta robotsの制御を実装したので纏めます。
実装内容は超簡単なので、「WordPress Meta Robots」プラグインを使っている人は外してしまって良いと思っています。
参考:【WordPress】プラグイン無しでカスタムフィールドを利用してmeta keywordsとmeta descriptionを実装する
WordPressでmeta robotsをプラグイン無しで実装する
前提のお話が抜けましたが、ページネーションの実装はGoogle推奨のもので行います。
ページ送りに対するSEO施工方法にも記載がありますが、ページネーションはnext/prevとcanonicalで対応する策がGoogle推奨の方法なため、こちらでいきます。
通常のブログでは、ページ送りの2ページ目以降はnoindexにしてしまうケースが多いようですが、サイトが大きくなった時のSEO効果減を鑑みて僕はその実装にしません。(2ページ目以降をnoindexにする実装も、後述します。)
ページネーションをnext/prevとcanonicalで対応するバージョンでmeta robotsを実装する
header.phpに、metaタグを記述してcontent部分をfunctions.phpで出し分けます。
<meta name="robots" content="<?php robots(); ?>">
<?php // meta robotsの制御 function robots() { // 検索結果、404、カテゴリー以外のアーカイブ(タグ・投稿者・日時)はnoindex,followに if (is_search() || is_404() || (is_archive() && !is_category())) { $content = 'noindex,follow'; // トップページ or 投稿・固定ページはindex,followに } elseif (is_home() || is_singular()) { $content = 'index,follow'; } echo $content; } ?>
コードに記載していますが、noindexにしたいページ郡(検索結果、404ページ、タグや投稿者・日時といったアーカイブ(カテゴリーページは除く))をnoindexにし、トップページや投稿・固定ページはindexにすればOKです。
後は、home.php(トップページ)の実装時に「link next/prev」と「canonical」を埋め込んでおけばOKです。
ページネーションは2ページ目以降をnoindex,followで対応するパターンでmeta robotsを実装する
これもそんなに難しくはありません。(header.phpの実装は変わらないので省略。)
<?php // meta robotsの制御 function robots() { // 検索結果、404、カテゴリー以外のアーカイブ(タグ・投稿者・日時)、トップページ2ページ目以降はnoindex,followに if (is_search() || is_404() || (is_archive() && !is_category()) || (is_home() && is_paged())) { $content = 'noindex,follow'; // トップページの1ページ目 or 投稿・固定ページはindex,followに } elseif ((is_home() && !is_paged()) || is_singular()) { $content = 'index,follow'; } echo $content; } ?>
出し分け時に、is_paged()という現在のページ番号が1より大きければTRUEを返してくれる便利な関数を利用して、条件分岐しています。
投稿毎にindexとnoindexを出し分けたい!とかある場合は、別途カスタムフィールドを利用した実装が必要になりますが、今のところ特にやることは無さそうなので上記で実装しています。