カスタムフィールドでリダイレクトシステムをつくってみる
この記事は1年以上前(2016年7月6日)に書かれたもので、内容が古い可能性がありますのでご注意ください。
プラグイン使えば一発じゃないかと思われるかもしれませんがカスタムフィールドとページテンプレートを併用すればそれっぽいリダイレクトシステムがつくれちゃいます。
自分の場合リダイレクションというプラグインで何回か不具合があったのとこれくらいならカスタムフィールドで代用できるのではと思ったためです。
恐らくですがどこにも掲載されてなかったのでこのやり方があってるかわからんです。使用される場合は自己責任で。
はじめに
今回はACFを使用しているのでコードもそれに倣わさせていただきます。
※基本的にカスタムフィールドを理解されていればどのプラグインを使用してもいいですし素のカスタムフィールドの値を代入しちゃっても構いません。
どんな時つかうの
例として以下のようなメニュー及びページ構成の場合。
※カッコ内はスラッグ
[code language=”php”]
企業情報(/company/)
- 企業理念(/company/vision/)
- 会社概要(/company/profile/)
- 沿革(/company/history/)
- アクセスマップ(/company/access/)
[/code]
企業情報という親に子ページがぶら下がってる場合、企業情報をインデックスとして導線ページをつくればいいのですがページの構成上直接子ページにリダイレクトさせてしまいたいなぁという時あるかと思います。
企業情報(/company/) にアクセスしたら 企業理念(/company/vision/)に飛ばす感じですね。
やり方
1. リダイレクトのテンプレート作成
名前はなんでもいいのですがpage-◯◯◯.phpの形でページテンプレートを作成します。 自分はpage-index.phpとかしてます。 こちらのファイルを以下に書き換えます。
[code language=”php”]
[/code]
変数redirect_urlに格納されているget_field(“config_redirect_url”);部分ですがget_fieldはACFの独自関数なのでご注意ください。値に関しては任意です。 仕組みは単純ですね。wp_safe_redirectというリダイレクト用関数をつかって値を代入してあてげてるだけです。home_urlで囲ってますのでここら辺は各々改良してください。自分のサイト内しかリダイレクトまわさないよというのであればこちらの設定のままお使いいただければいいかなと。
2. カスタムフィールドの設定
添付のように設定してください。
ラベル[リダイレクト先] 名前[config_redirect_url] ※ここら辺任意の文字列で設定しちゃってかまわないです。 ACFをお使いであれば位置、ルールの項目で以下を設定してあげます。 ページテンプレート インデックスリダイレクト設定
3. ページテンプレートの設定
固定ページ、新規追加を立ち上げると右側ページ属性にインデックス リダイレクト設定というページテンプレートがでてきたかと思います。こちらを選択すると先に設定したカスタムフィールド[config_redirect_url]に値が入力できるようになっているかと思うのでここで好きなスラッグを入力してみてください。
以上で完成かと。