Mill's Note

【Wordpress Tips】meta robots を書き換える

/

サイトを作成していると、個別ページを簡単に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' );

コードの使い方

  1. 個別ページ用に noindex_check というカスタムフィールド(真偽値フィールド)を作成し、投稿や固定ページに表示させておく
  2. 上記コードをfunctions.phpに記載する
  3. 別ファイルにする場合は、最初の <?php をお忘れなく^^

これでOK^^v
wp-head に自動で書き出してくれます。

get_field('noindex_check')is_category(〇〇) に変えるとか、|| で追加すれば、特定ページやカテ、タグのnoindex化も簡単にできます^^