WordPressで自動生成される不要なページを作らせない方法

目次
  1. テンプレート階層から不要なページをチェック
    1. 強制リダイレクトさせる方法
  2. WordPressで自動生成される不要なページを作らせない方法
    1. 強制的にリダイレクトするパターン
    2. 404ページにするパターン
    3. 生成されるページごとの条件分岐
  3. サイトマップから除外することをお忘れなく!
    1. 「All in One SEO」の場合
    2. 「XML Sitemap Generator for Google」の場合
    3. サイト内でリンクさせないように注意
  4. おわり

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でリダイレクトさせないための書き方でもあります!
(詳細は以下から)

WordPressのセキュリティ対策をちゃんとやるなら考えておきたい6つのこと

生成されるページごとの条件分岐

不要となりそうな代表的なページの条件分岐をまとめてみました。先ほど紹介したようにトップページへリダイレクトさせてもいいですし、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様に余計な心配をかけないためにも、サイトマップには不要なページは混ぜないようにしておきましょう。

※ プラグインを入れていなくても、WordPress 5.5からは本体が/wp-sitemap.xmlにサイトマップを出力します。著者ページなどを外したいときは、wp_sitemaps_add_providerフィルターで除外できます。

「All in One SEO」の場合

サイトマップとしてい生成した必要なページにだけチェックするようにしましょう。

「XML Sitemap Generator for Google」の場合

こちらも同様にサイトマップとしてい生成した必要なページにだけチェックするようにします。

サイト内でリンクさせないように注意

あと注意すべき点としては、サイト内から不要なリンクが貼られていない状態にしましょう。Googleはサイト内リンクをたどって、どういったページがそのサイトに存在するかを把握しています。

サイトマップに生成させないことも大事ですが、サイト内にリンクがあると「内部リンクがあるのに404になってますよ!」って心配してくれます。

なので内部リンクに不要なページが出力されないことも注意してWordPressを運用していきましょう!

おわり

WordPressで自動生成される不要なページを作らせない方法でした。といいつつ、内容は特定のページに来たユーザーに対して強制的にリダイレクトさせる方法となりました。

個人的には404の方が使い方としては理にかなっていると思います。不要だから削除したページって本来なら存在しないページになるのが自然だと思うからですね。
(すべての404ページがトップページへリダイレクトする仕組みのサイトであれば別にいいかと思いますが)

「不要なページにアクセスさせたくない」って方はぜひお試しください!

WordPressでお悩みの方はお気軽にご相談ください。

ちょっとしたお困り事からサイト全体のリニューアルのようなご依頼まで、お悩みに応じて柔軟に対応いたします。

この記事を書いた人

はにわまん

HPcode代表。300件以上のWordPress案件を対応してきました。ちょっとしたWordPressのカスタマイズからブロックテーマでのリニューアルまで。更新できるWordPressサイトが好きです。