一連のオプション項目を1つのグループとして、複数のグループを設定・登録できるようになりました。これにより予約品目ごと、異なるオプションを設定することができるようになりました。
登録・設定方法は今まで通り、大変簡単です。
オプショングループ
関連するオプション項目をまとめたものを「オプショングループ」と呼びます。オプショングループには数量の制限がありません。予約品目へのオプショングループの指定は後ほど説明しますが、異なる予約品目に同じオプショングループを指定しても異なるオプショングループを指定してもどちらでも構いません。
管理画面からオプション設定を実行すると、オプショングループの選択画面が表示されます。最初はオプショングループは何も登録されていないため表示されません。
ただし、以前のバージョンでオプションを登録していると、オプショングループのキー名に「default」、名称に「Default」と名付けたオプショングループが1つ、新しいシステムで利用できるように用意されます。
新しいオプショングループを登録する場合は、新規追加ボタンを押して下さい。そこに半角英数文字を使ってオプショングループのキー名、そして名称を入力して追加ボタンを押します。キー名や名称を変更する場合は、名称の編集ボタンを押して操作します。
オプション登録リストとオプション項目の追加・編集
オプショングループに登録するオプション項目は、オプショングループの選択で「オプションリスト」ボタンを押して次のオプション登録リストから操作します。
以前と同じようにオプションリストが表示されます。新規追加や編集はこの「オプション登録リスト」から実行して下さい。
なお、フィールドタイプは上図のものが利用可能です。
予約品目にオプショングループを設定する
登録したオプショングループは、予約品目の登録で選択できます。また、予約品目によりオプションを利用しない設定も可能です。
予約品目の編集画面の下の方に、下図のような「予約処理設定」の設定項目が表示されます。
オプションを利用する場合は「オプション有無」をチェックし、「タイトル名」でオプショングループを選択して下さい。
以上で予約フォームで選択したオプショングループの入力項目が利用できるようになります。
予約入力フォーム画面のメッセージフィルターによる書き換えについて
メッセージフィルター機能を利用してオプションに関するメッセージを書き換えている場合、複数のオプショングループが利用できることで、書き換えるメッセージもそれに合わせて変更したい場合があるかも知れません。
そこで新たに、予約入力フォームでどの予約品目が対象かIDが判別できる機能(フィルター)を用意しました。フィルター名は「booking_form_set_article_id」です。
このフィルター関数は予約フォームが表示される前(あるいはメール文章を生成する前)に、対象となる予約品目のIDを知らせてくれます。ですので、このフィルターで予め対象予約品目IDを保管し、メッセージフィルター内でIDを判定して書き換えるようにすればOKです。
次に例を示します。例はオプションのタイトルを、予約品目ランチ、またはディナーに合わせて書き換えるものです。
// 予約品目IDの保管 function mtssb_set_article_id($aid) { global $mtssb_article_id; $mtssb_article_id = $aid; } add_filter('booking_form_set_article_id', 'mtssb_set_article_id'); // 予約フォームの書き換え function mtssb_form_option_title($msg) ( global $mtssb_article_id; if ($mtssb_article_id == xx) { return 'ランチご注文'; } elseif ($mtssb_article_id == yy) { return 'ディナーご注文'; } return $msg; }
このプログラムで「$mtssb_article_id」は予約品目のIDを保管するグローバル変数になりますが、WordPressや他のプラグインで利用するグローバル変数と名前が重ならないように、注意して名付けて下さい。