WordPressで会員制サイトを作るのに便利なプラグイン Ultimate Memberがあります。
会員登録画面などもパーツを組み合わせて結構簡単に作れるのですが、一部ちょっと使い方が分からないところもあったり。
今回ハマったのはドロップダウン。
あらかじめ入力する内容が決まっているドロップダウンなら画面を見て簡単に作れるんですが、項目を動的に作成したい場合にはフィルターフックを使います。
フォームにドロップダウンを作成する
まずはフォームを作ってドロップダウンのフィールドを追加します。ここまでは普通のドロップダウンと一緒。
画面でいろいろと設定しますが、ここで大事なのはメタキーです。メタキーは一度作るとあとから変更できないのでよく考えて作ってください。
Edit Choicesには何か入力しないと保存できません。ここはなんでもいいので適当な文字を入れて更新ボタンを押して保存します。
ドロップダウンを動的に作成するフィルターフック
次にUltimate Memberで提供されているフックを使って、ドロップダウンの中に設定する値を作っていきます。
ここからはゴリゴリPHPを書いていきますよ。
一般的にはテーマのfunctions.phpに書くことになるかと。内容はこんな感じです。
add_filter('um_select_dropdown_dynamic_options_event-details', 'callback', 10, 2);
function callback($options)
{
$options = array(
'apple' => 'りんご',
'banana' => 'バナナ'
);
return $options;
}
ポイントをまとめるとこうなります。
- フィルターフックは”um_select_dropdown_dynamic_options_(メタキー名)”
- コールバック関数の中でコンボボックスに設定する値を”Key”=>”値”の配列で設定してリターンする
そうするとこんな感じのコンボボックスが作れます。
今の例だとコンボボックスを動的に作成する意味は全くありませんが、DBを絡めたりしてコンボボックスを動的に作る場合には便利です。
公式ドキュメントはこちら。