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 ); } ?>
まとめ
最近ではデフォルトでオフになっているがゆえに、あまり知られていない画像ページへの対処法を紹介しました。検索ページに画像ページが出てきてしまった際などのお役に立てばと思います。