ホームページやブログのコンテンツが検索エンジンの検索対象となるためには検索エンジンにインデックス(登録)される必要があります。
逆に内容が少ないコンテンツはインデックスされることでその記事だけでなくサイト全体が「内容の薄いサイト」と認識されてしまうこともあります(実際はどうなのか検索エンジンのアルゴリズムのみぞ知るところです)。
WordPressで作成した投稿や固定ページは何も設定しない限りすべてのコンテンツがインデックス登録対象になるようになっています。でも中には
- サイトに訪問した人だけに表示したいコンテンツを作りたい
- プラグインなどが作成したコンテンツをインデックス対象から外したい
という場合もあると思います。そこで重宝するのが「カスタム投稿タイプ」という通常の投稿とは別の記事の集まりを作り、その投稿タイプに書いた記事はすべてインデックス対象から外す方法。特別なコンテンツを作成するプラグインなどもこの「カスタム投稿タイプ」を使用しますから、もしもGoogleの検索エンジンクローラーなどから警告が来た場合には対処が必要です。
そこで今回は自身のサイトの環境に合わせてちょこっとカスタマイズしたコードをWordPressのテーマに直接追記するだけで「カスタム投稿タイプ」ごとインデックス対象から外す(noindex)にする方法を紹介します。
おまけ情報ですが、似たようなやり方にサーバー内の「robots.txt」に検索エンジンクローラーからのアクセス拒否をする設定がありますが、すでにインデックスされているコンテンツに対してこの処理を行うと大量に記事を削除した・・・と認識されることもありますから注意が必要だと思います(影響についてはやはり検索エンジンのアルゴリズムのみぞ知るところです)。
特定のカスタム投稿タイプで公開している記事すべてを「noindex」にするコード
コード自体は簡単なものです
<?php
if (is_singular('カスタム投稿タイプのスラグ')){
echo '<meta name="robots" content="noindex" />';
}
?>
説明すると、「カスタム投稿スラグ」に該当するカスタム投稿タイプの記事は「noindex」タグをHTMLソースの中に出力してくださいねというコードになります。
コードの設置方法
テーマによってファイル構造はさまざまですが通常は「header.php」を開いて挿入します。今回は当サイトでも使用している【Simplicity2】テーマを例に説明します(このテーマは特殊な例になると思います)。
※コードを追記する前に上のコードの中の「カスタム投稿タイプのスラグ」を環境に合わせて編集してください
※複数のカスタム投稿タイプを適用する場合は「’カスタム投稿タイプのスラグ’」の部分を「array(‘カスタム投稿タイプのスラグ1’,’カスタム投稿タイプのスラグ1’)」に書き換えて必要なカスタム投稿を追加します
方法1 親テーマに直接追記する
親テーマの「header-seo.php」を開きます。先頭に
<?php //ヘッダー部分の内部SEO最適化策
//ヘッダー部分を子テーマでカスタマイズしていても
//SEOのアップデートは親テーマで上書きできるようにするためのテンプレート ?>
というコードがありますのでその直下に上のコードを追記します。
※親テーマに直接追記すると、テーマのアップデートの際には上書きされてしまうことがありますので都度確認が必要です。
方法2 子テーマに「header-seo.php」ファイルをコピーして追記する
FTPを使って子テーマフォルダに親テーマの「header-seo.php」ファイルをコピーします。
子テーマの「header-seo.php」を開きます。先頭に
<?php //ヘッダー部分の内部SEO最適化策
//ヘッダー部分を子テーマでカスタマイズしていても
//SEOのアップデートは親テーマで上書きできるようにするためのテンプレート ?>
というコードがありますのでその直下に上のコードを追記します。
※子テーマに親テーマのファイルをコピーした場合、親テーマで大規模なアップデートがあったときなどには不具合が発生することもありますから注意が必要です。
子テーマの「header-insert.php」ではダメ?
決してダメというわけではありませんが、今回紹介する「noindex」メタタグは本来headerコンテンツの上部に設置することが望ましいとされています
【Simplicity2】の「header-insert.php」に記述した内容はheader内の末尾に追加されるのであまり好ましくないのでは?と思われるだけなので、気にしない方は「header-insert.php」へ追記してもいいでしょう。
いずれの方法にしても、きちんと目的の投稿タイプの記事に「noindex」タグが挿入されているか、また逆に、目的の投稿タイプ以外の記事に誤って「noindex」タグが挿入されていないかを確認しましょう。