【WordPress】インデックスされてしまった画像ページへの対処

WordPressで構築したサイトのインデックス状況を調べていたところ、そのサイトの記事内で使用していた画像ページ数ページがGoogleにインデックスされているのに気づきました。

インデックスされていた画像ページのURLは、以下のようなものです。

ドメイン/ページURL/画像ファイル名

当然のことながら、画像のみのあまり意味のないページをインデックスされたくはありません。

そこで、いろいろ調べ実際に行った、インデックスされてしまった画像ページへの対処についてまとめてみたいと思います。

画像ページが生成される原因

WordPressの記事中に、画像を添付する際、一般的には、記事の編集画面の[メディアを追加]ボタンを押し、ローカルフォルダにある画像をWordPressのwp-content/upgradeフォルダにアップロードしてから、画像を挿入するという流れになります。

メディア挿入の手順

その際、[メディアを挿入]画面右の[添付ファイルの表示設定]の項目の[リンク先]が、デフォルトだと[メディアファイル]に設定されており、[メディアファイル]を選択すると、自動的に以下のようなタグが挿入されます。

<a href="https://ドメイン/wp-content/uploads/2018/07/○○○.gif"><img class="aligncenter size-full wp-image-○○○" alt="○○○" src="https://ドメイン/wp-content/uploads/2018/07/○○○.gif" width="○○○" height="○○○" /></a>

画像にaタグが付いているのがわかるように、これによって、ページに挿入した画像をクリックすると、その画像のみが表示される別ページへ遷移するようになっています。

このようにして、画像ページが生成され、その画像ページをGoogleがインデックスするという流れになります。

今後、画像ページを生成しないようにする

上記の流れで画像ページが作成されてしまい、今後も、もしかしたらさらに他の画像ページがインデックスされてしまいかねません。

そこで、まず、今後の画像挿入時に、[リンク先]を[なし]にすればいいのですが、その都度、なしにするのは、若干手間です。

なので、今後、デフォルトで[リンク先]を[なし]に設定しました。

[リンク先]を[なし]に設定する手順

まず、WordPressの管理画面にログイン後、ブラウザのアドレスバーに以下のURLを記入し、「すべての設定」画面を開きます。

https://ドメイン/wp-admin/options.php

「すべての設定」画面は、メニューには無く、手動で[options.php]を付けることによって開くことができます。

「すべての設定」画面の下の方にスクロールすると、[image_default_link_type]の[file]を[none]に書き換えます。

すべての設定画面

これで、これ以降は、画像を挿入しても、aタグは挿入されず、画像ページは生成されなくなります。

すでにインデックスされてしまった画像ファイルをインデックスされないようにする

それでは次に、すでにインデックスされてしまった画像ページをインデックスから削除したいところです。

その際、真っ先に思い浮かべるのは、サーチコンソールの[URLの削除]ツールです。

しかし、[URLの削除]ツールは、但し書きにもあるように、指定のURLを「検索結果から一時的に削除」するだけですので、しばらくすれば、また検索結果に戻ってくる可能性もあります。

そこで、恒久的に画像ページを削除するために、以下のように対応しました。

画像ページのみにnoindexタグを挿入

ご周知のとおり、noindexタグは、指定のページをGoogleにインデックスしないように認識してもらうためのタグです。

画像ページのみにnoindexタグを挿入するには、以下コードをWordPressのheader.phpの中の<head>~</head>内の任意の場所に記述します。

《画像ページのみにnoindexタグを挿入するためのコード》

<!--?php if ( is_attachment() ): ?-->
<meta name="robots" content="noindex" />
<!--?php endif; ?-->

 

《コードを記述する箇所》

WordPressの管理画面の[外観]⇒[テーマ編集]⇒右サイドバーのヘッダー部のテンプレートを選択。

<head>
・・・
<!--?php if ( is_attachment() ): ?-->
<meta name="robots" content="noindex" />
<!--?php endif; ?-->
・・・
</head>

この記述の後、念のため、実際にインデックスされている画像ページを開き、ページ上でマウスを右クリックし、[ページのソースを表示]させ、実際にnoindexタグが挿入されているかどうか確認しましょう。

その結果、間違いなくnoindexタグが挿入されていれば、後は、Googleが認識してくれるのを待ち、しばらく時間はかかっても、徐々に検索結果に表示されないようになると思われます。

この際、認識してもらうのを早めるために、サーチコンソールの[Fetch as Google]で、対象となる画像ページのクロールを促してもいいかと思います。

過去に挿入した画像が別ページに遷移しないようにする

上記の手順で、画像ファイルについて、今後と現在の状況への対応を行いましたが、それでは、過去記事中のすでに[メディアファイル]で画像ページへ遷移するように設定している画像については、どのように処理を行えばよいのでしょうか?

いろいろ調べてみると、以下のソースをWordPressのfunction.phpファイル中に記述することにより、過去記事中のすべての画像について、一括でリンクを無効化することができるようです。

add_filter( 'the_content', 'attachment_image_link_remove_filter' );
 function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(
 array('{<a(.*?)(wp-att|wp-content\/uploads)[^>]*><img}',  '{ wp-image-[0-9]*" />}'),
array('<img','" />'),
$content
 );
 return $content;
}

function.phpファイルに記述し、アップロードし、確認してみたところ、実際に、すべての過去記事中の画像をクリックしようとしてもできす、遷移しませんでした。

ただし、投稿編集画面で、個々の過去記事を見てみると、冒頭に示したのと同じように、画像のimgタグがaタグで囲まれたままでした。

<a href="https://ドメイン/wp-content/uploads/2018/07/○○○.gif"><img class="aligncenter size-full wp-image-○○○" alt="○○○" src="https://ドメイン/wp-content/uploads/2018/07/○○○.gif" width="○○○" height="○○○" /></a>

つまり、この方法は、プログラム的に遷移しないようにするだけで、記事中の画像ページへのリンクが削除されるわけではないということです。

遷移しなければ、画像ページが生成されないということなのかもしれませんが、本文中に画像ページへのリンクタグが残っていることが気になる場合は、手間ですが、一つ一つの画像ページへのリンクタグを削除しておいた方がいいのかもしれません。

もっとも、万が一過去記事の画像リンクが生成されたとしても、上述で対処したように、今後は画像ページにnoindexタグが挿入されるようになっていますので、インデックスされるということは、おそらく無いのではないかと思います。

以上、画像ページがインデックスされてしまった際の対処方法についてまとめてみました。

放置して、知らない間に多数の画像ファイルがインデックスされるのは、あまりいい気はしませんので、早めに対処しておいた方がいいのではないでしょうか。