2018.09.10
WordPress
wordpressで自動生成される画像ページで困ったことと対処法

古いwordpressは画像ページというものを画像投稿の際に生成しています。これは特定のphpテンプレートに投稿した画像が一枚ぽつんとあるだけのページで、seo的に意味が大変薄いうえに、ページのスラッグを画像のファイル名で専有するので、サイトの運営上不都合が多いです。
最近ではwordpressの初期設定でこのページは生成しないがデフォルトになっているようなのですが、古いwordpressのリニューアル調整を依頼された際にこの問題に直面したので、今回はその対処法をお伝えします。
画像ページとは
画像ページは生成する設定になっている場合、wordpressに画像を投稿した際に自動的に生成されています。画像ページへのテンプレート割り当ては以下のようになっています。
- MIME_TYPE.php(image.php、video.php、audio.php、application.php、その他 MIME type の最初の部分のファイル名)
- attachment.php
- single.php(記事ページのデフォルト)
- index.php
ページのスラッグは画像のファイル名で自動生成されます。これは固定ページや投稿ページのスラッグと競合します。
画像ページを生成しない設定に
画像ページは生成しない設定にすることができます。
option.phpのimage_default_link_typeをnoneに設定することで、画像ページの生成を行わない設定にできます。
画像のファイル名をリネーム
既に生成された画像ページがありそれが新しいページとスラッグを競合しているとき、原始的ですがファイル名をリネームすることでこれに対処できます。画像のリンク元ページのhtmlも記述を直すことに注意しましょう。
テンプレートでリダイレクト
既に画像ページが大量に生成されてしまっているときは、テンプレートでリダイレクトを行う方法で対処できます。
attachment.phpに対して以下のコードを記述します。themeにattachment.phpがない場合は追加します。
<?php
// 添付元(投稿、ページなど)のある画像ページの場合、添付元にリダイレクト
if ( $post->post_parent ) {
wp_redirect( get_permalink( $post->post_parent ), 301 );
}
// 添付元の不明な画像ページの場合、トップページにリダイレクト
else {
wp_redirect( home_url(), 302 );
}
?>
まとめ
最近ではデフォルトでオフになっているがゆえに、あまり知られていない画像ページへの対処法を紹介しました。検索ページに画像ページが出てきてしまった際などのお役に立てばと思います。
