WordPressで自動生成される不要なページを作らせない方法です。
・・・という見出し作りつつ作らせないというよりは、作成されたURLにアクセスされたら別ページへ強制的にリダイレクトさせるという方法になります。
(作らせることを無効化させることはできないっぽい)
それでは、どのようにリダイレクトさせるか見ていきましょう!
テンプレート階層から不要なページをチェック
WordPressがどういったページを自動生成するかを確認するには、テンプレート階層を見ると分かりやすいかと思います。
WordPressが自動的に作成されるページを大枠でまとめると以下のとおりです。
- トップページ
- 固定の詳細ページ
- 投稿の詳細ページ
- 投稿一覧ページ
- カテゴリー一覧ページ
- タグ一覧ページ
- 著者一覧ページ
- 日付別一覧ページ
- 添付ファイルページ
- 検索結果一覧ページ
- 404ページ
個人的には圧倒的に「添付ファイルページ」が不要だと思うのですが、これは当時なんのために設計されたんでしょうね…
強制リダイレクトさせる方法
ページを生成させない方法ですが、WordPressの仕組みとして生成自体はされるようです。表示をさせないという意味で言うと、特定のページ(ページ郡)へアクセスされた時に強制的にリダイレクトさせて表示させないという対応になります。
WordPressで自動生成される不要なページを作らせない方法
WordPressで自動生成される不要なページを作らせない方法には大きくは2つのパターンがあります。
- 強制的にリダイレクトするパターン
- 404ページにするパターン
それぞれの実装方法を見ていきましょう!
強制的にリダイレクトするパターン
「強制的にリダイレクトさせて表示させない」という対応になるのですが、フックとしてはtemplate_redirect
になります。
(参考)→ template_redirect | Hook | WordPress Developer Resources
これは、wp_head()
よりも先に読み込まれるリダイレクト処理になります。
以下は添付ファイルページにアクセスされたらトップページへリダイレクトする記述になります。
function my_template_redirect() {
if ( is_attachment() ) {
nocache_headers();
wp_safe_redirect( home_url() );
exit;
}
}
add_action( 'template_redirect', 'my_template_redirect' );
添付ファイルについては、メディアの「添付ファイルのページを表示」から確認できるのでぜひ試してみてください!
404ページにするパターン
parse_query
のクエリを使って404に変えてしまいます。
(参考)→ parse_query | Hook | WordPress Developer Resources
function my_parse_query( $query ) {
if ( is_attachment() ) {
$query->set_404();
status_header( 404 );
nocache_headers();
}
}
add_filter( 'parse_query', 'my_parse_query' );
自作テーマの場合は、404.phpを作成しておくことをお忘れなく!
ちなみにこの書き方は著者一覧を?author=1
でリダイレクトさせないための書き方でもなります!
(詳細は以下から)
https://haniwaman.com/cms/wordpress-security/
生成されるページごとの条件分岐
不要となりそうな代表的なページの条件分岐をまとめてみました。先ほど紹介したようにトップページへリダイレクトさせてもいいですし、404ページへリダイレクトさせてもいいかと思います。
function my_template_redirect() {
if ( is_attachment() ) {
// 添付ファイルページ
} else if ( is_author() ) {
// 著者一覧ページ
} else if ( is_search() ) {
// 検索一覧ページ
} else if ( is_date() ) {
// 日付系一覧ページ
}
}
add_action( 'template_redirect', 'my_template_redirect' );
サイトマップから除外することをお忘れなく!
例えば404にしているにも関わらず、サイトマップ(xml)に出力してGoogle Search Consoleで連携してたりすると、Google様から「404ページめっちゃ多いけど大丈夫?」みたいな心配をされるかもしれません。
Google様に余計な心配をかけないためにも、サイトマップには不要なページは混ぜないようにしておきましょう。
「All in One SEO Pack」の場合
サイトマップとしてい生成した必要なページにだけチェックするようにしましょう。
「Google XML Sitemaps」の場合
こちらも同様にサイトマップとしてい生成した必要なページにだけチェックするようにします。
サイト内でリンクさせないうように注意
あと注意すべき点としては、サイト内から不要なリンクが貼られていない状態にしましょう。Googleはサイト内リンクをたどって、どういったページがそのサイトに存在するかを把握しています。
サイトマップに生成させないことも大事ですが、サイト内にリンクがあると「内部リンクがあるのに404になってますよ!」って心配してくれます。
なので内部リンクに不要なページが出力されないことも注意してWordPressを運用していきましょう!
おわり
WordPressで自動生成される不要なページを作らせない方法でした。といいつつ、内容は特定のページに来たユーザーに対して強制的にリダイレクトさせる方法となりました。
個人的には404の方が使い方としては理にかなっていると思います。不要だから削除したページって本来なら存在しないページになるのが自然だと思うからですね。
(すべての404ページがトップページへリダイレクトする仕組みのサイトであれば別にいいかと思いますが)
「不要なページにアクセスさせたくない」って方はぜひお試しください!