先に答えを知りたい人は、以下のコードをコピーしてSANGOの子テーマのfunctions.php内貼り付ければ解除できます。
// デフォルトのmeta robotsタグの除去
function remove_parent_theme_hook(){
remove_action('wp_head','sng_meta_robots', 10);
}
add_action('after_setup_theme','remove_parent_theme_hook');
// デフォルトのコードをカスタマイズ
function my_meta_robots() {
global $post;
$rogots_tags = '';
if (is_attachment()) {//メディアページの場合
$rogots_tags = 'noindex,nofollow';
} elseif (is_page() || is_single()) { //記事・固定ページの場合
$robots_r = get_post_meta( $post->ID, "noindex_options", true );
if( is_array($robots_r) ) {
$rogots_tags = ( in_array('noindex', $robots_r) && !in_array('nofollow', $robots_r)) ? 'noindex,follow' : implode( ",", $robots_r);
}
} elseif(is_paged() || is_date()){ //トップやアーカイブの2ページ目以降はindexせず、followだけ。
$rogots_tags = 'noindex,follow';
} elseif(is_search()){ //検索結果はインデックスしない
$rogots_tags = 'noindex,nofollow';
} elseif(is_category()){ //カテゴリーページ
//初期設定ではインデックス。下記のコメントアウトを外すとnoindexに
//$rogots_tags = 'noindex,follow';
}
elseif(is_tag()) {
// 下記のコメントアウトを外すと再度noindexに
//$rogots_tags = 'noindex,follow';
}
if($rogots_tags) {
echo '<meta name="robots" content="'.$rogots_tags.'" />'."\n";//出力
}
}
add_action( 'wp_head', 'my_meta_robots' ,10);
以下説明。
WordPressでメジャーなブログテーマであるSANGOでは、自動でタグページにnoindexが付くようになっている。
そしてこのタグがつかないようにするために、公式サイトでも子テーマに追加するコードが書かれている。
しかし、このコードを貼り付けてもnoindexが解除されない。
なぜならWordPressが子テーマのfunctions.phpの方を先に読み込み、親テーマのfunctions.phpを後に読み込むから。
つまり子テーマのfunctions.phpで親テーマのfunctions.phpのコードを上書きしようとしても、ファイルの読み込み順序が子テーマの方が先なため上書きできない。
そもそも読み込まれる順序が逆だからである。
親テーマでフックに登録された関数を消すためには、’after_setup_theme’アクションフックで、親テーマの読み込みが終わってから実行されるようにする必要がある。
またコード3行目のremove_action関数の引数を「10」にしないと解除できないため要注意
※引数とはremove_action(‘wp_head’,’sng_meta_robots’, 10);の、最後についてる数値のことです
この引数はフックの優先順位を指定するもので、優先度の数が小さいほど先に実行され、大きいほど後に実行される。
初期値はどのフックも「10」なのだが、優先度を同じにしないと解除できない。
本来であればSANGO公式サイトに連絡するのがいいのかもしれないが、その時間が取れず。(この記事は書いてるけど…w)
誰か優しい方はSANGO公式に連絡してあげてください。

コメント