【CSS + JS】テキストの無限ループアニメーション
【WordPress】
便利なアクションフック
「template_redirect」


WordPressをカスタマイズする上で欠かせないのがアクションフックです。
今回はその中でもかなり使用頻度の高い「template_redirect」フックについてのメモ。
template_redirectの概要
WordPressをある程度カスタマイズできるようになってくると、ページが表示される最初のタイミングで何かを実行したい!という場面が出てきます。
そんな時に使えるアクションフックがtemplate_redirect
です。
WordPressのアクションフックは以下のページに掲載されています。
アクションフックは実行する順番があり、上記のCodexに載っているリストも実行順になっているとのことですが、よく読むと「大体の目安」となっているので、ちゃんと調べてみた方のブログを拝見して確認しました。
こちらの記事の実行結果を見るとinit
やwp
よりも後で、wp_head
よりも早いタイミングで実行されることがわかります。
投稿データを取得した後に実行するため、通常テンプレート内で使うようなis_page
などの条件分岐タグが使えます。init
では条件分岐タグは使えないですし、wp_head
や直接テンプレートファイルに処理を書くとすでにヘッダー情報が送信されていてリダイレクトなど実行できない処理があるので、このタイミングのフックは非常に重宝します!
使い方
例えば特定のページを404にしたり、特定のページをリダイレクトさせる場合
function custom_redirect() {
//投稿者アーカイブページを404
if(is_author()) {
global $wp_query;
$wp_query->set_404();
status_header(404);
}
//スラッグ名「test」の固定ページをTOPにリダイレクト
elseif(is_page('test')){
wp_safe_redirect(home_url('/'));
exit();
}
}
add_action( 'template_redirect', 'custom_redirect' );
こんな感じでページを表示する最初のタイミングで条件分岐して処理を書くことができます。
他にも
- 特定のページでセッションをクリアしたり保存したり
POST
やGET
などのフォームの受信処理- DBやプラグインを使ったデータ処理
など、テンプレートファイルに直接書きたくないような処理をこのフックで書いておくことでスッキリします。
さいごに
アクションフックは他にもいろいろ便利なものがあります。このフックを使ったカスタマイズ性がWordPressの良いところだと思うので、便利なものがあればまたご紹介できればと思います。
RELATED
NEW POSTS

【WordPress】GA4連携の人気記事ランキング機能を自作プラグイン化してみた
![netlify UPDATE BUILD IMAGE [ビルドイメージの更新]](https://notes.sharesl.net/wp-content/uploads/2022/09/netlify-update-build-image-660x440.jpg)
【netlify】ビルドイメージを更新 [ Ubuntu Xenial 16.04 → Ubuntu Focal 20.04 ]
![Google Business Profile API [ PHPでクチコミ一覧取得 ]](https://notes.sharesl.net/wp-content/uploads/2022/06/business-profile-api-1-660x440.png)
【PHP】Google Business Profile APIを使ってクチコミを取得する

スクリーンショットのAPI「screendot」を使ってみた

【window.matchMedia】メディアクエリでhoverが使えるデバイスを判定

lax.jsの使い方【スクロール連動アニメーションの実装】