添付ファイルのページを無効にする(404エラーを返す)

WordPressで画像ファイルなどをアップロードするとその画像専用の「添付ファイルのページ」が作られ、記事に画像を挿入するとき「添付ファイルのページ」を選択すると、このページへのリンクが追加されます。
画像を挿入する際に「添付ファイルのページ」を選択しなくても、このページは有効になっており、URLを指定してアクセスすると該当ページが表示されます。
例えば以下のような感じ。
http://digital.veefour.com/記事URL/添付ファイル名/
http://digital.veefour.com/?attachment_id=添付ファイルID

添付ファイルのページでは、普通の記事と同じようにコメント欄などがあってコメントを受け取ったりもできるようですが、必要ないので無効化してしまいます。

以下の記事を参考にしました。
WP SEOブログ:
画像挿入時のリンク先設定で「添付ファイルのページ」を消しattachment_id=に404を返す

functions.php にコードを追加する方法が紹介されていますが、常に読み込む必要もないかと思い、attachment.php を修正してみました。

<?php
   global $wp_query;
   $wp_query->set_404();
   status_header(404);
?>
<?php get_template_part('404'); ?>

紹介されている方法ではテンプレートファイルを読み込む前にフックしてリダイレクトしているので、直接 404.php が読み込まれると思いますが、attachment.php が読み込まれたあとにリダイレクトするようにしたため、get_template_part() で 404.php を呼び出すようにしました。
image.php など他の添付ファイル用のテンプレートファイルが存在する場合は、それらも同じように修正するか、削除しておきます。

これで添付ファイルのページにアクセスした場合、404のエラーを返すようになります。

ついでに。
コメントのポップアップ表示用URLも用意されており、アクセスするとコメントだけのページが表示されます。例えば、以下のようなURL。
http://digital.veefour.com/index.php?comments_popup=記事ID
こちらも不要なので、同じように404エラーを返すようにしました。

comments-popup.php を、先に書いた attachment.php と同じ内容で作成します。
ちなみに、このファイルがない場合はデフォルトテーマのファイルが参照されるため、削除するだけではダメでした。


COMMENT

コメントをどうぞ

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)