WordPressのnoindex記事IDをすべて出力する方法

2 30

サーチコンソールで「送信された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' );

コメント入れてますが、

  1. meta_key(カスタムフィールドの名前)
  2. 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」でやりたい…なんて場合にも役立つと思います。

カテゴリー WordPressカスタマイズ

この記事が良かったらいいね!最新情報が届きます!

この記事を書いた人 :

このサイト「MORIAWASE」の運営者。少しでも多くの人の悩みや不安を解決するためにハウツー記事を中心に更新しています。お問い合わせはページ下部のお問い合わせページから。フォローやシェアは大歓迎です!