/
サイトを作成していると、個別ページを簡単にnoindex
にしたいとか、特定のタグやカテゴリだけをnoindex
にしたいとか、max-snippet:160
を追加したいとか、ご要望をいただく事あるあるです^^
WordPressが書き出してくれるなら、それを書き換えるのが一番スマートなやり方かな、と^^
個別ページをnoindex
にするなら、カスタムフィールドを作ってそれをheadに呼び出す、特定が決まっているならheadかfunctions.php に個別に書き込むという手もありますが。。。
(クローラーは1個目しか認識しないようなので、作動はします)
これをやると、<meta name=’robots’ content=’~’> が2重出力になってちょっとダサい _ _;;
wp出力を消して別に作るのは2度手間だし、メンテもしづらいですよね。
WordPress の meta robots を書き換える
WordPressでは、ちゃんとwp_robots
というフックを用意してくれているので、それを利用します。
noindex_check
(カスタムフィールド)、検索ページ、404、非公開(private)をnoindex
にして、max-snippet:160
を追加したコードです。
( 非公開はそのままではnoindexにならない為、併せて指定しておきます)
ACFで noindex_check という真偽値フィールドを作成していることを前提としています。
PHP
<?php /* functions.php に直接書き込む場合はこの行を削除 */
function custom_meta_robots( array $robots ) {
if ( get_field( 'noindex_check') || is_search() || is_404() || get_post_status() === 'private' ) {
$robots['noindex'] = true;
$robots['max-image-preview'] = false;
$robots['max-snippet'] = false;
} else {
$robots['max-snippet'] = '160'; /* max-snippet:160 を追加 */
}
return $robots;
}
add_filter( 'wp_robots', 'custom_meta_robots' );
コードの使い方
- 個別ページ用に
noindex_check
というカスタムフィールド(真偽値フィールド)を作成し、投稿や固定ページに表示させておく - 上記コードを
functions.php
に記載する - 別ファイルにする場合は、最初の <?php をお忘れなく^^
これでOK^^v
wp-head に自動で書き出してくれます。
get_field('noindex_check')
をis_category(〇〇)
に変えるとか、||
で追加すれば、特定ページやカテ、タグのnoindex化も簡単にできます^^