【WordPress】
便利なアクションフック
「template_redirect」

WordPressをカスタマイズする上で欠かせないのがアクションフックです。
今回はその中でもかなり使用頻度の高い「template_redirect」フックについてのメモ。

template_redirectの概要

WordPressをある程度カスタマイズできるようになってくると、ページが表示される最初のタイミングで何かを実行したい!という場面が出てきます。
そんな時に使えるアクションフックがtemplate_redirectです。

WordPressのアクションフックは以下のページに掲載されています。

https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7#.E4.B8.80.E8.88.AC.E7.9A.84.E3.83.AA.E3.82.AF.E3.82.A8.E3.82.B9.E3.83.88.E4.B8.AD.E3.81.AB.E5.AE.9F.E8.A1.8C.E3.81.95.E3.82.8C.E3.82.8B.E3.82.A2.E3.82.AF.E3.82.B7.E3.83.A7.E3.83.B3

アクションフックは実行する順番があり、上記のCodexに載っているリストも実行順になっているとのことですが、よく読むと「大体の目安」となっているので、ちゃんと調べてみた方のブログを拝見して確認しました。

https://wemo.tech/2062

こちらの記事の実行結果を見るとinitwpよりも後で、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' );

こんな感じでページを表示する最初のタイミングで条件分岐して処理を書くことができます。

他にも

  • 特定のページでセッションをクリアしたり保存したり
  • POSTGETなどのフォームの受信処理
  • DBやプラグインを使ったデータ処理

など、テンプレートファイルに直接書きたくないような処理をこのフックで書いておくことでスッキリします。

さいごに

アクションフックは他にもいろいろ便利なものがあります。このフックを使ったカスタマイズ性がWordPressの良いところだと思うので、便利なものがあればまたご紹介できればと思います。

記事一覧

RELATED

inoue
TIPS

【CSS + JS】テキストの無限ループアニメーション

inoue
TIPS

【Shopify】カートへの遷移を飛ばしてチェックアウトに進むボタンを設置する

inoue
TIPS

【JS】PhotoSwipe v5を使って画像をポップアップ表示する

inoue
TIPS

gulpでjpg・pngからAVIF画像を生成する

inoue
TIPS

【JS】MutationObserverでDOMを監視[PhotoSwipe(v5)+Swiper(v8)連携]

inoue
TIPS

【Google Sheets API】 スプレッドシートのデータをJSONで取得する

NEW POSTS

inoue
TRY

【WordPress】GA4連携の人気記事ランキング機能を自作プラグイン化してみた

inoue
TRY

【netlify】ビルドイメージを更新 [ Ubuntu Xenial 16.04 → Ubuntu Focal 20.04 ]

inoue
TIPS

【PHP】Google Business Profile APIを使ってクチコミを取得する

inoue
TRY

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

inoue
TIPS

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

inoue
TIPS

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

ブログ記事一覧
  • HOME
  • TIPS
  • 【WordPress】便利なアクションフック「template_redirect」