一連のオプション項目を1つのグループとして、複数のグループを設定・登録できるようになりました。これにより予約品目ごと、異なるオプションを設定することができるようになりました。

登録・設定方法は今まで通り、大変簡単です。

オプショングループ

関連するオプション項目をまとめたものを「オプショングループ」と呼びます。オプショングループには数量の制限がありません。予約品目へのオプショングループの指定は後ほど説明しますが、異なる予約品目に同じオプショングループを指定しても異なるオプショングループを指定してもどちらでも構いません。

管理画面からオプション設定を実行すると、オプショングループの選択画面が表示されます。最初はオプショングループは何も登録されていないため表示されません。

new_optgroup01

ただし、以前のバージョンでオプションを登録していると、オプショングループのキー名に「default」、名称に「Default」と名付けたオプショングループが1つ、新しいシステムで利用できるように用意されます。

新しいオプショングループを登録する場合は、新規追加ボタンを押して下さい。そこに半角英数文字を使ってオプショングループのキー名、そして名称を入力して追加ボタンを押します。キー名や名称を変更する場合は、名称の編集ボタンを押して操作します。

new_optgroup23

 

オプション登録リストとオプション項目の追加・編集

オプショングループに登録するオプション項目は、オプショングループの選択で「オプションリスト」ボタンを押して次のオプション登録リストから操作します。

new_optlist1

 

以前と同じようにオプションリストが表示されます。新規追加や編集はこの「オプション登録リスト」から実行して下さい。

new_optitem2

 

なお、フィールドタイプは上図のものが利用可能です。

予約品目にオプショングループを設定する

登録したオプショングループは、予約品目の登録で選択できます。また、予約品目によりオプションを利用しない設定も可能です。

予約品目の編集画面の下の方に、下図のような「予約処理設定」の設定項目が表示されます。

new_optarticle

 

オプションを利用する場合は「オプション有無」をチェックし、「タイトル名」でオプショングループを選択して下さい。

以上で予約フォームで選択したオプショングループの入力項目が利用できるようになります。

予約入力フォーム画面のメッセージフィルターによる書き換えについて

メッセージフィルター機能を利用してオプションに関するメッセージを書き換えている場合、複数のオプショングループが利用できることで、書き換えるメッセージもそれに合わせて変更したい場合があるかも知れません。

そこで新たに、予約入力フォームでどの予約品目が対象か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や他のプラグインで利用するグローバル変数と名前が重ならないように、注意して名付けて下さい。