Advanced Custom Fieldsを活用したWordPressのリダイレクト方法

Advanced Custom Fieldsを活用したWordPressのリダイレクト方法

WordPress(ワードプレス)の投稿や固定ページの入力項目をカスタマイズできるプラグイン、Advanced Custom Fieldsを活用したリダイレクト方法について紹介します。

本記事を読むことで、Advanced Custom Fieldsで作成したカスタムフィールドの入力値に応じてリダイレクト処理を行う方法を知ることができます。ぜひご覧ください。

Advanced Custom Fields(ACF)とは

Advanced Custom Fields
引用:Advanced Custom Fields公式サイト

WordPressの投稿やカスタム投稿、固定ページなどにオリジナルの入力項目を追加することができるプラグインです。

テキストや画像、チェックボックスやラジオボタンなどの選択肢系、リンクなど、WordPressのデフォルトにはない入力項目をカスタムフィールドとして編集画面に追加することができます。

Advanced Custom Fieldsは200万以上のWebサイトで利用されていて、評価の平均値も最大の5つ星と非常に多くのユーザーに信頼されているプラグインということが分かります。

Advanced Custom Fieldsについてはこちらの記事で詳しく紹介しているので、ぜひご覧ください。

Advanced Custom Fieldsの基本的な使い方を紹介します

WordPressのリダイレクト方法

WordPressでは、主に2つのリダイレクト方法が用意されています。それぞれを紹介していきます。

WordPressサイト内でのリダイレクト

WordPressサイト内で、トップページやその他のページなどにリダイレクトさせる場合は下記の関数を使用します。

<?php
wp_safe_redirect( home_url() );
exit;
?>

wp_safe_redirect() では、第一引数にリダイレクト先の設定、第二引数にHTTP レスポンスステータスコード(リダイレクト方式)を設定します。デフォルトでは、ステータスコードに302が設定されています。そのため、一時的な転送の場合は、記述を省略します。

主なステータスコード

ステータスコード説明
301恒久的なリダイレクト
302一時的なリダイレクト
ステータスコードを使用した記述方法
<?php
wp_safe_redirect( home_url(), 301 );
exit;
?>

カンマ区切りで、第一引数に「リダイレクト先」、第二引数に「ステータスコード」を入力します。

外部サイトへのリダイレクト

WordPressサイト以外の外部サイトへリダイレクトを行う場合は下記の関数を使用します。

<?php
wp_redirect( home_url() );
exit;
?>

wp_redirect()wp_safe_redirect() 同様に、第一引数にリダイレクト先の設定、第二引数にHTTP レスポンスステータスコード(リダイレクト方式)を設定することができます。ステータスコードについては、前述した「WordPressサイト内でのリダイレクト」を参照してください。

注意事項

リダイレクト関数のwp_safe_redirect()wp_redirect() をページテンプレートなどで使用する場合は、必ずget_header() より前に記述します。

Advanced Custom Fieldsを活用したリダイレクト

それでは、Advanced Custom Fieldsを活用し、カスタムフィールドの入力値に応じたリダイレクト処理について紹介していきます。

ラジオボタンで選択した項目によってリダイレクト

Advanced Custom Fieldsで編集画面に追加したラジオボタンの選択項目によって、リダイレクトの処理を行う方法を紹介します。

具体的な例としては、求人情報を掲載するWebサイトで、求人募集が終了した場合にトップページにリダイレクトさせる方法を紹介します。(求人情報はカスタム投稿、カスタムフィールド(ラジオボタン)は募集状況)

単純に求人情報の詳細ページに、カスタムフィールドなどで作成した「募集終了」のラベルを表示させれば済む場合もありますが、募集が終了したページを見せたくないといった要望があった場合に応えることができるようになります。

カスタムフィールドを利用したリダイレクトの手順としては下記になります。

  1. Advanced Custom FieldsをWordPressにインストールする
  2. カスタムフィールドを追加する
  3. 編集画面でラジオボタンの任意の項目を選択する
  4. テンプレートファイルに任意の選択項目に応じた条件分岐の処理を記述する

Advanced Custom Fieldsのインストール方法とラジオボタンフィールドの追加方法については、こちらの記事で詳しく解説しているので、使用方法が分からない場合は参考にしてください。

ACFのラジオボタンの使い方と条件分岐を使った応用方法

Advanced Custom Fieldsの設定

フィールドタイプの設定内容は下記になります。※設定内容は一例

フィールドタイプラジオボタン
フィールドラベル募集状況
フィールド名recruitment_status
選択肢now_recruiting : 募集中
application_closed : 募集終了
初期値空※デフォルトのまま
返り値両方(配列)

上記を参考に、フィールドグループを作成してください。返り値は配列以外でも大丈夫ですが、使い勝手が良いこともあり、本記事では選択肢には値とラベルの両方を入力し、返り値も両方(配列)を選択しています。

設定項目では、「このフィールドグループを表示する条件」に対して、カスタム投稿の求人情報を選択します。

編集画面でラジオボタンの項目を選択する

Advanced Custom Fieldsで追加したラジオボタンを表示しているページの編集画面へ移動します。(固定ページや投稿ページなど※本記事ではカスタム投稿)

編集画面でラジオボタンの項目を選択する

追加した募集状況というラジオボタンが表示されていることを確認し、「募集終了」を選択します。

WordPressのテンプレートファイルの編集

前述したWordPressのリダイレクト方法を参考にし、テンプレートファイルにリダイレクトの記述を追加します。

ラジオボタンの選択項目に応じた条件分岐の処理を記述します。

<?php
$recruitmentStatus = get_field('recruitment_status');
if($recruitmentStatus['value'] === 'application_closed') {
  wp_safe_redirect( home_url() );
  exit;
}
?>

get_field('recruitment_status') で作成したカスタムフィールド(募集状況)の入力内容を取得し、変数$recruitmentStatusに代入します。※フィールドタイプの設定で、返り値として配列を選んでいるので、$recruitmentStatusには「値」と「ラベル」が代入されます。

$recruitmentStatusの「値(value)」が「募集終了(application_closed)」かどうかをif文で判断し、募集終了であれば、トップページへリダイレクトする条件分岐の処理を行います。

正常にトップページへリダイレクトされれば成功です。また、「募集終了」から「募集中」にラジオボタンの選択を変更し、リダイレクトされずに求人情報の詳細ページが表示されれば、条件分岐が正しく行われています。

まとめ

本記事では、WordPressにカスタムフィールドを追加できるプラグイン、Advanced Custom Fieldsを活用したリダイレクト方法について紹介しました。通常のリダイレクトだけではなく、条件に応じたリダイレクトなどを設定できるようになることで、Webサイト運営の幅が広がります。

本サイトでは、Advanced Custom Fieldsはもちろん、他のWordPressプラグインに関する情報も発信しているので、ぜひご覧ください。少しでもお役に立てれば幸いです。

カテゴリー