先に答えを知りたい人は、以下のコードをコピーして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公式に連絡してあげてください。
コメント