お店のスタッフ向けの毎日の使い方はガイドにあります。最初の設定はガイドの「1. 最初の設定」をご覧ください。
Basics
1. 動作環境と Takeout Menu との関係
- WordPress 6.5 以上、PHP 7.4 以上。
- Tokurabo Takeout Menu が必要です(
Requires Plugins)。Takeout Menu がないと Takeout Orders を有効化できません。また、Takeout Orders が有効なあいだは Takeout Menu を停止できません。 - メニュー・値段・税は Takeout Menu を通してのみ読み込みます。レジアプリ(Square など)や外部のサービスには接続しません。
- 注文は WordPress のデータベースに保存し、メールで送信します。レジアプリには登録されません。お支払いは店頭で、お店のスタッフがいつもどおりレジで打ちます。
- 専用のページやショートコードは不要です。カートと注文フォームは、表示中のページの上に開きます。カートに商品が入っていれば、サイトのどのページにもカートのボタンが表示されます。
Settings
2. 設定の一覧
管理画面のメニューの Takeout Menu の下にあります。開けるのは管理者(manage_options)だけです。
Takeout Menu > Order settings(受付設定)
| セクション | 設定 | 説明 |
|---|---|---|
| Taking orders(受付の状態) | Stop taking orders(受付を停止)/Resume taking orders(受付を再開) | 押した瞬間に反映されます(Save Changes とは別)。メニューは表示されたままです。「+」と Add to cart が非表示になり、カートでは Checkout の代わりにメッセージが表示され、サーバーも新しい注文を受け付けません。 |
| Message while paused(受付停止中のメッセージ) | 停止中にお客様に表示するメッセージ。空欄なら「ただいまオンラインのご注文を受け付けておりません。時間をおいてお試しください。」 | |
| Pickup times(受け取りの時刻) | Preparation time(準備の時間) | 0〜240 分。初期値は 30。 |
| Time slots(時刻の間隔) | 5・10・15・20・30・60 分ごと。初期値は 15。時刻は時計の区切りに合わせます(10:00、10:15 …)。 | |
| Days ahead(予約できる日数) | 1〜60 日(今日を含めて数える)。初期値は 7。 | |
| Daylight saving time(夏時間) | お店のタイムゾーンで、今後1年以内に夏時間の切り替えがある場合だけ表示されます(日本では表示されません)。3 を参照。 | |
| Special days(臨時営業時間の設定) | Date(日付)/Status(状態:Closed 休み・Special hours 臨時営業時間)/Hours(時間) | ふだんの営業時間より優先されます。過ぎた日は保存するときに自動で削除されます。同じ日付が2つある場合は、後のほうを使います。 |
| Checkout(注文フォーム) | Notice to customers(注文フォームのお知らせ) | 注文フォームのいちばん上に表示されます。使えるのは改行・<strong>・<a> だけです。 |
| Order emails(注文のメール) | Shop name(店名) | メールの送信者の名前と、件名・本文に使います。空欄ならサイトのタイトル。 |
| From email address(お店のメールアドレス) | 注文のメールの差出人と、新しい注文の送り先を兼ねます。カンマで区切って5つまで(差出人は1つ目)。空欄ならサイト管理者のメールアドレス。正しくないアドレスがあると保存されません。4 を参照。 | |
| Send test email(テストメールを送る) | 保存した設定で、From email address のすべてのアドレスにテストメールを送ります。 | |
| Order numbers(注文番号) | Prefix | 英数字 10 文字まで。英字の小文字は大文字になり、記号は取り除かれます。初期値は TO。 |
| Order history(注文の記録) | Keep orders for(記録を残す期間)… days after pickup | 0=無期限(初期値)。最大 3650。 |
| Styles(スタイル) | Use the plugin styles(プラグインのスタイルを使う) | 初期値はオン。オフにすると、カートと注文フォームの CSS を自分で設定できます。8 を参照してください。 |
Takeout Menu > Availability(取扱商品)
商品のチェックを外すと、その商品の注文受付を停止します。チェックを戻すまで「Sold out(売り切れ)」と表示され、同期しても元に戻りません。停止できるのは商品単位です(値段の種類やカスタマイズ単位ではありません)。カスタマイズを停止したい場合はレジアプリ(Square など)で売り切れにしてください。
Pickup times
3. 受け取り時間の決まり方
- お店の営業時間:レジに登録した店舗の営業時間(Square ならロケーションの営業時間。Takeout Menu 0.2.0 以上で取り込み。地域やレジアプリによっては設定できません)。ない場合は、お店の営業時間はありません(ほかのメニューの提供時間は使いません)。
- 選べる時刻:いずれかのメニューが提供されている時間。提供時間のないメニューは、お店の営業時間に従います。お店の営業時間もなければ、そのメニューにだけある商品は「お店から連絡して決める」になります(下の説明)。
- Special days(臨時営業時間の設定)が最優先です。休みの日は選べません。臨時営業時間はその日の営業時間になります(提供時間のあるメニューは、重なる時間だけ)。
- 今日は「現在時刻+Preparation time(準備の時間)」以降だけ。今日が営業日なら「ASAP」(できるだけ早く)も選べます。終了時刻ちょうどまで選べます(21:00 までなら 21:00 も)。0 時をまたぐ営業時間は翌日に続きます。
- カートの商品が選んだ時刻に用意できない場合は、注文フォームにその商品とふだんの提供時間が表示され、Place order(注文する)が押せなくなります。
時刻はお店のタイムゾーン(Takeout Menu がレジから取り込んだもの。ない場合は WordPress のタイムゾーン)で計算します。時刻の表示形式は WordPress の 設定 > 一般 の時刻形式に従います。
お店から連絡して決める:提供時間のないメニューにだけある商品がカートにあり、レジに店舗の営業時間もなければ、お客様は時間を選びません。注文全体が To be arranged(未定(要連絡))になり、お店からお客様に連絡して決めます。このとき受付設定の Pickup times の下に説明が表示されます。どのメニューにも提供時間がなければ、すべての注文がこの形になり、黄色いお知らせが表示されます。レジでメニューの提供時間を設定すれば、次の同期で元に戻ります。
夏時間:時計が進むときに存在しなくなる時刻は表示しません。時計が戻るときに2回ある1時間は、1つの時刻が2つの時点を指してしまうため、設定でオンにした場合だけ表示します。
注文を受けたとき、サーバーで受け取り時間をもう一度確認します。すでに選べない時刻になっていれば、お客様に選び直してもらいます。
Orders
4. 注文・注文番号・メール
サーバーで確認すること
ブラウザが送るのは商品の ID・カスタマイズ・数量だけで、値段は送りません。サーバーが現在のメニューから注文を作り直します。商品とカスタマイズがサイトに表示中のメニューにあり、売り切れでないこと、必須の選択や選べる数を確認し、値段はメニューのページと同じ計算(税込か税抜かは Takeout Menu の設定どおり)で出します。時価の商品があれば、小計は「Price varies」(時価)になります。
注文番号
Prefix+月日+ランダムな4文字(0〜9・A〜F)。例 TO-1017-A3F9。
メール
wp_mail() で送信するテキストメールで、サイトの言語で届きます。
| メール | 宛先 | 件名(英語のサイトの例) | 返信先(Reply-To) |
|---|---|---|---|
| お客様へ | お客様のメールアドレス | Order received: TO-1015-A3F9 - 店名 | From email address の1つ目 |
| お店へ | From email address(すべて) | New order TO-1015-A3F9 - pickup Oct 17 12:00 pm | お客様のメールアドレス |
送信者(From)は「店名 <From email address の1つ目>」です(受付設定の Shop name・From email address。空欄ならサイトのタイトルとサイト管理者のメールアドレス)。SMTP のプラグインで送信元を固定している場合は、そちらの設定が使われます。迷惑メールに入る・届かない場合は SMTP のプラグインを使ってください(設定のしかたはガイドにあります)。小計のあとには、Takeout Menu の値段の見せ方に合わせて「(税込)」か「(税抜)」が付きます(カートと注文の一覧も同じ)。お客様へのメールとカートでは、見出しが「小計 (概算)」になります(税の端数の丸め方がレジと違い、1円ずれることがあるため。最終の金額はレジで計算します)。送信に失敗しても注文は記録され、お客様の画面には「確認のメールをお送りできませんでした。注文番号を控えておいてください。」と表示されます。
Records
5. 注文の一覧・CSV・記録を残す期間
- Orders:WordPress 標準の一覧表。1ページ 20 件。注文番号・名前・メール・電話番号で検索できます。Pickup(受け取り)と Received(受付日時)で並べ替えられます。1件ずつ、またはまとめて削除できます(Delete permanently(完全に削除))。ゴミ箱と注文のステータスはありません。一覧の上に、注文がいつまで残るか(記録を残す期間)が表示されます。
- Export CSV(CSV をエクスポート):商品1つを1行として出力します。検索中はその絞り込み結果のまま出力します。UTF-8(BOM 付き。Excel で開けます)。
= + - @で始まる値は、数式として実行されないように処理します。サーバーにはファイルを残しません。 - CSV の列:Order・Received・Pickup・ASAP・Name・Email・Phone・Order notes・Item・Variation・Options・Notes・Quantity・Unit price・Line total・Order subtotal・Currency・Prices。
- Order history(注文の記録):1日1回(WP-Cron)、受け取り日時から設定した日数が過ぎた注文を、お客様の情報ごと削除します。受け取り日時で判断するので、先の予約は削除されません。WP-Cron はサイトへのアクセスがあったときに動くため、少し遅れることがあります。
Privacy
6. お客様のデータと個人情報
- 注文と一緒に保存するもの:名前・メールアドレス・電話番号。ログイン中のお客様の場合は、ユーザー ID も。
- 名前・メールアドレス・電話番号は、次回の注文のためにお客様のブラウザ(localStorage)にも保存します。カートの中身も同じ場所に保存します。
- いたずら対策のため、IP アドレスとメールアドレスを元に戻せない形に変換したものを、最大1時間保存します。
- 外部のサービスには何も送信しません。
- ツール > 個人データのエクスポート に Takeout Orders が追加されます。ツール > 個人データの消去 では、名前・メールアドレス・電話番号・メモを置き換え、注文番号・商品・金額は売上の記録として残します。
必要に応じて、サイトのプライバシーポリシーにこれらの内容を追記してください。
Security
7. いたずら対策
- 同じ IP アドレスからは 10 分に 5 件まで、同じメールアドレスへは 1 時間に 5 件まで。
tokurabo_takeout_orders_rate_limitフィルターで変更できます(お店の Wi-Fi など、大勢が同じ接続元になる場合)。 - 人には見えない入力欄で、簡単なボット(自動送信)を見分けます。
- 送信のたびに番号を付けます。同じ番号がもう一度届いたら(2回押した・通信が切れたなど)、1回目の注文を返し、2つ目の注文は作りません。
- CAPTCHA はありません。
キャッシュのプラグイン
受け取り時間は、注文フォームを開くたびに取得します(Cache-Control: no-store)。ページがキャッシュされていても、最新の時間が表示されます。REST のノンスはログイン中のユーザーにだけ付けるので、キャッシュされたページでも注文が失敗することはありません。
Design
8. 見た目を変える
カートと注文フォームは、メニュー(ない場合はページ)の色とフォントを引き継いで使います。色の設定はありません。さらに変更したい場合は CSS を追加してください。クラス名は takeout-orders- で始まります。
/* カートのボタンの位置を変える */
:root {
--takeout-orders-cart-right: 24px;
--takeout-orders-cart-bottom: 24px;
}
CSS をすべて自分で書く
Order settings > Styles の Use the plugin styles(プラグインのスタイルを使う) をオフにします。カートのボタン、カート、注文フォーム、商品の画面の数量と Add to cart、メニューの「+」について、プラグインの CSS を読みこまなくなります。管理画面の CSS はそのままです。
オフにしても、最小限の CSS だけは読みこみます。ロボット対策の隠し欄を隠す(お客様に見えて入力されると、注文を受け付けなくなるため)ほか、アイコンの大きさなど、いくつかの小さな指定です。ロボット対策の欄以外は詳細度 0(:where())なので、自分の CSS でそのまま上書きできます。
この設定は、Takeout Menu の同じ名前の設定とは別です。コードで切る場合は、tokurabo_takeout_orders_load_css フィルターを使います。
Developers
9. 開発者向け:フックと REST API
フィルター
| フィルター | 変えられるもの |
|---|---|
tokurabo_takeout_orders_store_hours | 曜日ごとのお店の営業時間(1=月 … 7=日 => 時間帯の配列)。 |
tokurabo_takeout_orders_prep_minutes | 準備時間(分)。いちばん早い時刻と ASAP に使います。保存した設定値は変わりません。 |
tokurabo_takeout_orders_open_periods | その日に選べる時間帯(引数:時間帯の配列、その日)。 |
tokurabo_takeout_orders_pickup_message | 受け取り時間の見出しの下に表示するメッセージ。初期値は空。 |
tokurabo_takeout_orders_checkout_fields | 注文フォームの最後に入力欄を追加:key・label・type(text/textarea)・required・maxlength・placeholder。1つの注文に1つずつ。 |
tokurabo_takeout_orders_check_fields | 追加した入力欄([ { key, label, value } ])を検証。WP_Error を返すと、そのメッセージを出して注文を受け付けません。 |
tokurabo_takeout_orders_email | 送信前のメール1通ずつ:kind(customer/store)・to・subject・body・headers と注文の中身。 |
tokurabo_takeout_orders_rate_limit | [ 'ip' => [ 5, 600 ], 'email' => [ 5, 3600 ] ]。件数を 0 にすると制限しません。 |
tokurabo_takeout_orders_load_css | false を返すと、プラグインの CSS を読みこみません。Use the plugin styles をオフにするのと同じです。 |
追加プラグイン用の別のカート
追加のプラグインは、商品と受け取り時間を独自に持つ別のカートを、通常のカートとは別に作れます。カートのボタンと通常のカートには影響しません。
- ブラウザでは
window.tokuraboTakeoutOrdersCreateCart( options )でカートを作ります。options で、カートを保存する場所・データ・メニュー/受け取り時間/注文の REST の口を指定します。注文を送るときに、カートの名前(cart)を付けます。 tokurabo_takeout_orders_cart_menus・tokurabo_takeout_orders_cart_choices(フィルター):カートの名前ごとに、メニューと受け取り時間を渡します。どちらかがnull(追加のプラグインを停止したときなど)の場合は、注文を受け付けません。tokurabo_takeout_orders_check_order(フィルター):別のカートの注文を記録する前に、確認済みの商品と受け取り時間を渡して呼びます。WP_Errorを返すと、注文を受け付けません。通常のカートでは呼びません。- お客様の情報の確認、スパム対策、受付の停止、注文番号、記録、メールは、通常のカートと同じです。カートの名前は注文と一緒には記録せず、
tokurabo_takeout_orders_order_placedに渡します。
アクション
tokurabo_takeout_orders_order_placed:注文を記録した後、メール送信の前。注文の内容を受け取ります。tokurabo_takeout_orders_orders_deleted:一覧から注文を削除した後。削除した ID の一覧を受け取ります。
REST API(名前空間 tokurabo-takeout-orders/v1)
GET /menu:サイトに表示中のメニュー。メニューのないページでカートが使います。GET /pickup:現在選べる受け取り時間。POST /orders:注文を送信。失敗したときはcodeがtokurabo_takeout_orders_で始まる JSON を返します。
データベースのテーブル
{prefix}tokurabo_takeout_orders(注文1つを1行)と {prefix}tokurabo_takeout_order_items(商品1つを1行)。商品名と値段は、注文時点のものをコピーして保存します。
Help
10. 困ったとき・ログ
| こんなとき | 見るところ |
|---|---|
| メールが届かない | まず迷惑メールのフォルダ、次に SMTP のプラグイン(ガイド)を確認してください。送信時のエラーはログで確認できます。 |
| 「Could not load pickup times.」(受け取りの時刻を読みこめませんでした。) | REST API がブロックされている(セキュリティのプラグイン・サーバーの設定)か、サイトがエラーを返しています。/wp-json/tokurabo-takeout-orders/v1/pickup を開いて確認してください。 |
| 時刻が何時間かずれて表示される | レジアプリ(Square など)の店舗のタイムゾーンと、設定 > 一般 > タイムゾーン を確認してください。 |
| 「Too many orders. Please wait a few minutes and try again.」(注文が多すぎます。数分たってから、もう一度お試しください。) | 回数の上限に達しています。大勢が同じネットワークから注文していないか確認してください。tokurabo_takeout_orders_rate_limit フィルターで変更できます。 |
| 古い注文が削除されない | WP-Cron が止まっているか、サイトへのアクセスが少ないためです。サーバーの cron から wp-cron.php を実行してください。 |
詳しいエラーは、wp-config.php で WP_DEBUG_LOG を有効にした場合だけ wp-content/debug.log に記録します。
プラグインを削除したとき
停止するだけなら何も削除されません。削除すると、注文(テーブル2つ)・設定・予約した処理がすべて削除されます。先に CSV に書き出してください。プラグインの一覧の「停止」の横に Export orders(注文をエクスポート)のリンクがあります。Takeout Menu とその設定は削除されません。
Download
Takeout Orders を無料で手に入れる
Tokurabo Takeout Orders は、WordPress.org で無料で公開しています。
WordPress.org からダウンロードWordPress の管理画面の プラグイン > 新規プラグインを追加 からもインストールできます。
Add-on
注文が増えてきたら
Takeout Orders に追加して使う有料のプラグインです。
Takeout Order Board 有料
Takeout Orders に届いた注文を、お店のタブレットで随時対応できるオーダーボード機能を実装します。ボタン1つで注文を進めて、お客様にメールでお知らせ。混雑モード・季節の予約商品・注文履歴等の機能も充実しています。
Takeout Order Board を見る