WordPressのテンプレート内でリダイレクト処理をさせたいことがたまにあるので、方法をメモしておきます。
サンプルコード
リダイレクトさせる想定としては、以下のような場合です。
- 記事にカテゴリーは付けるが、カテゴリー一覧は使用しない
- 記事の投稿はするが、表示は一覧のみで個別ページは使用しない
header.php
// デフォルトの投稿の個別ページは使わないので、ホームへリダイレクトする if(is_singular( 'post' )) { wp_redirect( home_url(), 301 ); exit; }
これで個別ページにアクセスした場合、WordPressのホームへリダイレクトするようになりました。
今回は今後ページを使用しないのでステータスコードを301にしましたが、一時的にリダイレクトする場合は302にしてください。
wp_redirect( $location, $status ); | 指定されたURLへリダイレクトする。 $location: リダイレクト先URLを指定。 $status: 使用するステータスコードを指定。初期値は302。 |
---|
wp_redirect()を使う場合、以下の2点に注意してください。
- header.php内もしくはget_header()より前で使用する
- wp_redirect()は自動的にexitしないので、直後にexitを実行する
【参考サイト】
コメントが承認されるまで時間がかかります。