MENU CLOSE

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

WordPress
WordPress

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

template_redirectの概要

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

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

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

こちらの記事の実行結果を見ると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

テキストの無限ループアニメーション【CSS + JS】
inoue
inoueのサムネイル
TIPS

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

shopify
inoue
inoueのサムネイル
TIPS

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

PhotoSwipe v5
inoue
inoueのサムネイル
TIPS

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

AVIF [ gulpでjpg・pngからAVIF画像を生成 ]
inoue
inoueのサムネイル
TIPS

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

MutationObserverでDOMを監視[PhotoSwipe(v5)+Swiper(v8)連携]
inoue
inoueのサムネイル
TIPS

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

Google Sheets API スプレッドシートのデータをJSONで取得する
inoue
inoueのサムネイル
TIPS

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

NEW POSTS

GA4連携人気記事ランキング機能を自作プラグイン化してみ【WordPress】
inoue
inoueのサムネイル
TRY

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

netlify UPDATE BUILD IMAGE [ビルドイメージの更新]
inoue
inoueのサムネイル
TRY

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

Google Business Profile API [ PHPでクチコミ一覧取得 ]
inoue
inoueのサムネイル
TIPS

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

screendot screenshot API
inoue
inoueのサムネイル
TRY

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

window.matchMedia hoverを判定
inoue
inoueのサムネイル
TIPS

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

lax.js
inoue
inoueのサムネイル
TIPS

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

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