サーチコンソールで「送信されたURLにnoindexタグが追加されています」というエラーが発生していたので、除外設定しようとnoindexしている記事のIDを調べていたんですが…
たくさんあって調べるの面倒!
となったので、すべてのnoindex記事のIDをカンマ区切りで出力する関数を作ってみました。
カスタムフィールドのキーと値を変えるだけのほぼコピペで使えるコードなので、noindex記事がたくさんある場合は便利だと思いますよ!
noindex記事のIDを出力するコード
こちらがnoindex記事のIDを出力するサンプルコード。functions.phpに貼り付けます。
function noindex_post_id() {
$args = [
'post_type' => 'any',
'posts_per_page' => -1,
'meta_key' => 'noindex', //変更箇所
'meta_value' => 1, //変更箇所
];
echo '<div id="message" class="updated notice notice-success is-dismissible"><p style="word-break:break-all;">';
$postslist = get_posts($args);
if($postslist) {
foreach ($postslist as $post) {
echo $post->ID;
if(next($postslist)) echo ',';
}
} else {
echo 'noindexしている記事はありません';
}
echo '</p></div>';
}
add_action( 'admin_notices', 'noindex_post_id' );
コメント入れてますが、
- meta_key(カスタムフィールドの名前)
- meta_value(カスタムフィールドの値)
の2つだけ適宜変更してください。
カスタムフィールドの名前と値の調べ方はこちらの記事で解説しています。
実際の表示はこんな感じ。今回のコードでは管理画面上部に表示されます。
後は、これをすべてコピーしてGoogle XML Sitemapsの設定画面にペーストすれば…除外設定完了!
記事URLのpost=◯◯の数字を一つ一つ調べる必要もありませんよ:)
All in One SEO Packで設定している場合
例えば、SEOプラグイン「All in One SEO Pack」でnoindex設定した記事のIDを出力するコードはこのようになります。
function noindex_post_id() {
$args = [
'post_type' => 'any',
'posts_per_page' => -1,
'meta_key' => '_aioseop_noindex',
'meta_value' => 'on',
];
echo '<div id="message" class="updated notice notice-success is-dismissible"><p style="word-break:break-all;">';
$postslist = get_posts($args);
if($postslist) {
foreach ($postslist as $post) {
echo $post->ID;
if(next($postslist)) echo ',';
}
} else {
echo 'noindexしている記事はありません';
}
echo '</p></div>';
}
add_action( 'admin_notices', 'noindex_post_id' );
プラグイン停止後もカスタムフィールドのデータは残っているので取得できますし、SEO対策は「All in One SEO Pack」でやってるけどサイトマップの生成・送信は「Google XML Sitemaps」でやりたい…なんて場合にも役立つと思います。