AumCreate

AumReserva — 官方手冊

AumReserva 把一個 WordPress 網站變成預約系統,適用於任何「一個人、一個時段」的預約: 課程、療程、諮詢、看屋與維修。它不要求特定佈景主題,也不需要其他外掛。

1. 這個外掛加入了什麼

啟用 AumReserva 會註冊兩個內容類型與兩個分類法:

註冊的項目承載什麼
Services(arb_service)可被預約的項目:時長、價格、緩衝時間,以及由哪些人提供
Service Categories服務上的分類法,用來把型錄分組
Staff Members(arb_staff)由誰提供:職稱、工作時間、休假日與狀態
Locations人員上的分類法,依工作地點分組

預約不是文章。它們是一張自己的資料表 arb_bookings 中的資料列 —— 這正是它們有狀態、有 CSV 匯出、有日曆,而不是一個編輯畫面的原因。

前台是一個短代碼加一個彈窗。訪客挑選服務、人員、日期與一個空閒的開始時間, 然後留下聯絡資料。預約被寫進資料表,並寄出已設定的郵件。

2. 安裝

安裝並啟用外掛。會出現一個 Reserva 選單,底下有七個畫面:Dashboard、 Service Categories、All Services、All Staff Members、Locations、All Bookings 與 Settings。

AumReserva 已啟用,且是站上唯一的外掛

有兩件事值得優先完成,因為預約表單會讀取這兩者:

  1. Reserva → All Services —— 至少新增一項服務。
  2. Reserva → All Staff Members —— 至少新增一位人員,再到服務的 Assigned staff members 裡把他指派給該服務。

沒有指派任何人員的服務無法被預約。彈窗會停在人員那一步,而且找不到任何人可以提供。

3. 服務

服務是一篇普通的文章,多了一個區塊 Service Details。

服務列表
服務上的 Service Details
欄位控制什麼
Duration (minutes)這次預約持續多久
Price顯示在服務卡片、彈窗與郵件中
Buffer time after service (minutes)預約結束後額外封鎖的分鐘數,用於清理、記錄或往返
Assigned staff members誰可以提供這項服務。訪客在第一步從這些人之中挑選
Max bookings per slot針對這項服務覆寫全站的數值。留空則跟隨全域設定
Deposit (%)針對這項服務覆寫全站的訂金比例。需要 WooCommerce
Staff selection step跟隨全域設定、針對這項服務強制開啟,或強制關閉

計算一個時段被佔用多久時,時長與緩衝時間是相加的。一項 45 分鐘、緩衝 10 分鐘的服務 佔用 55 分鐘,因此同一個人的下一次預約最早只能在 55 分鐘之後開始。

3.1 一次承載多人的服務

另外三個欄位可以把一項服務從單次預約變成一個班次或一堂課:

欄位控制什麼
Fixed start times指定的時刻,例如 09:00, 13:30。留空則提供當天的每一個時段
Seats per time一個開始時間可容納多少人。留空表示一次預約即一組客人,不計人頭
Most people per booking一次預約最多可包含多少人。只有在設定了座位數時才會讀取

設定了座位數之後,彈窗裡的每一個開始時間都會帶著剩餘名額, 而一次預約是扣掉它的人數,而不是直接把這個時間關掉。

Service Categories 用來把服務分組,供您自己使用。它們不限制誰可以預約什麼。

4. 人員

人員也是一篇普通的文章,多了兩個區塊。

人員列表
人員上的 Staff Details

Staff Details 存放他是誰、以及什麼時候工作:

欄位控制什麼
Job Title顯示在人員那一步的姓名之下
Years of Experience與職稱一起顯示
Override global working hours for this staff member勾選後,下面兩個欄位取代全站的工作時間
Work Start / Work End這個人的工作時段
Days Off這個人無法提供服務的日期,不論工作時間怎麼設定
StatusWorking、On Vacation 或 Inactive。只有 Working 的人員會被提供

自訂時間只會縮小可預約範圍,不會擴大。在一個 09:00 開門的站台上, 某位人員的一天從 10:00 開始,則他從 10:00 起被提供, 而 09:00 與 09:30 這兩個時段會渲染成不可選、而不是消失 —— 這樣訪客看得出這個時間存在,只是這個人不在那個時段工作。

Linked Login Account 把這位人員連到一個 WordPress 使用者, 可以連結既有帳號,也可以用 Full name、Email address 和一封選用的歡迎信建立一個。 已連結帳號的人員登入後,在後台日曆與 [arb_my_bookings] 中只會看到自己的預約。

5. 地點

Locations 是人員上的分類法,不是服務上的。同一項服務可以在多個地點提供, 因為提供它的人在多個地點工作。

Locations 畫面

人員那一步會依地點分組,各有一個標題。被指派到兩個地點的人員會同時出現在兩個標題之下。 訪客選的那一筆會隨預約一起記錄下來。

6. 營業時間

全站的工作時間位於 Reserva → Settings → General 的 Working Hours 區段:

設定控制什麼
Working days一週中的哪幾天接受預約
Working hours全站一天的開始與結束
Break每天一段不接受預約的時間
Slot length提供的開始時間之間相隔多少分鐘
Minimum advance booking (hours)預約在開始前幾小時關閉
Maximum advance booking (days)日曆往後開放幾天
Max bookings per slot一個開始時間接受幾筆預約,除非某項服務另行覆寫

Slot length 是開始時間之間的間隔,不是一次預約的長度。在 30 分鐘的間隔下, 一項 45 分鐘的服務會在 10:00、10:30、11:00 等時間被提供, 而每一筆預約各自封鎖它的時長加緩衝所需要的時間。

7. 把預約表單放到頁面上

建立一個頁面,加入短代碼 [arb_services]。它會把每一項已發佈的服務渲染成一張卡片, 帶有價格、時長與一個 Book Now 按鈕。

服務頁面

共有三個短代碼:

短代碼渲染什麼
[arb_services]服務卡片與預約彈窗
[arb_booking_button]單一服務的一個按鈕,供嵌在其他內容中使用
[arb_my_bookings]客戶自己的預約,以及預約完成後立即顯示的確認資訊

Reserva → Settings → Booking Flow → Redirect page 指定訪客預約之後落在哪裡。 把它指向放著 [arb_my_bookings] 的那個頁面,訪客就會看到自己預約了什麼。 留空則讓他留在原本預約的那個頁面上。

8. 訪客會做什麼

第一步 —— Choose staff。 被指派到這項服務的人員,依地點分組。 這一步可以在全站範圍關閉,也可以針對單項服務在 Staff selection step 關閉。

人員那一步

第二步 —— Choose date。 不在工作日內的日期、早於最短提前時間的日期、 超出最長提前天數的日期,以及這個人的休假日,全都渲染成不可選。

日期那一步

第三步 —— Choose time。 以設定的間隔提供開始時間。 當某個時間落在這個人的工作時間之外、落在休息時段之內, 或被既有預約的時長加緩衝覆蓋到時,它是不可選的。

時間那一步

第四步 —— Your details。 姓名與電子郵件為必填,電話與備註為選填。 欄位上方的摘要會重述日期、時間與人員。啟用 Collect address 之後, 會多出一個必填的地址欄位。

資料那一步

訪客需不需要帳號,由 Booking Flow 底下的 Allow guest bookings 與 Require login 決定。 允許訪客預約時不會建立帳號,預約以電子郵件地址對應。

9. 後台的預約

Reserva → All Bookings 列出每一筆預約。

All Bookings

篩選列可依狀態、人員、服務與日期範圍縮小範圍。CSV 匯出的是目前篩選的結果, 不是整張資料表。

狀態是資料列上的一個下拉選單,所以改狀態只要一個動作,不需要單獨一個畫面。 狀態有 Pending、Confirmed、Cancelled、Completed 與 No Show。 新預約拿到哪一個,由 Booking Flow 底下的 Auto-confirm bookings 決定: 關閉時,預約以 Pending 進來並等您處理。

10. 日曆

Reserva → Dashboard 有四個計數、最近的預約,以及一個日曆。

儀表板與日曆

日曆每位人員一欄,最前面另有一欄 Unassigned,放沒有指派人員的預約。 Day 與 Week 切換跨度,人員下拉選單可縮到單一個人。

已連結登入帳號的人員只看得到自己那一欄。

11. 郵件

Reserva → Settings → Notifications 控制誰會被通知什麼:

通知寄給何時
New booking客戶、人員有人完成預約時
Confirmed客戶預約轉為 Confirmed 時
Cancelled客戶、人員預約轉為 Cancelled 時
Reminder客戶、人員預約開始前設定的小時數

每一個收件對象各有一個開關,而 Enable emails 是它們之上的總開關。 Admin email 設定當一筆預約沒有附帶人員時,由哪個地址收到給人員的那一份。

提醒信由 WP-Cron 寄出,因此它取決於站台有流量、或有一個真正的排程工作呼叫 wp-cron.php。在一個沒有訪客的站台上,提醒信會遲到或根本不會寄出。

12. 為這三樣東西改名

「Service」「Staff」「Location」是預設名稱。 Reserva → Settings → General → Label Customisation 可以把三者的單數與複數全部改掉。

設定的 General 標籤

複數標籤同時也是服務彙整頁、人員頁與地點頁的網址基礎。 把 Services 改名為 Treatments,會把彙整頁從 /services/ 移到 /treatments/。 指向舊網址的既有連結會失效,所以要在對外發佈連結之前改名,而不是之後。

改過的名稱會出現在後台選單、麵包屑、彙整頁標題,以及預約彈窗的每一步。

13. 設定對照表

設定畫面有三個標籤。

13.1 General

設定作用
Label Customisation第 12 節說明的那六個名稱
Currency symbol加在外掛渲染的每一個價格之前
Time format12 小時制或 24 小時制,套用於外掛渲染的每一個時間,郵件也包含在內
Working days哪幾天接受預約
Working hours全站一天的開始與結束
Break每天一段不接受預約的時間
Slot length提供的開始時間之間的間隔
Max bookings per slot一個開始時間接受幾筆預約,除非某項服務另行覆寫
Minimum advance booking (hours)在預約開始前這麼多小時關閉預約
Maximum advance booking (days)日曆往後開放這麼多天
Deposit (%)全站的訂金比例,於預約時收取。需要 WooCommerce

13.2 Booking Flow

設定作用
Staff selection step全站範圍內,彈窗是否詢問人員
Allow guest bookings是否可以不建立帳號就完成預約
Require login是否必須有帳號才能進到表單
Auto-confirm bookings新預約進來時是 Confirmed 還是 Pending
Allow customers to cancel客戶自己的預約上是否出現取消控制項
Cancellation cutoff (hours)在預約開始前多久關閉取消
Collect address增加一個必填的地址欄位,供到客戶場所提供的服務使用
Redirect page訪客預約之後落在哪裡

13.3 Notifications

設定作用
Enable emails所有通知之上的總開關
Admin email沒有附帶人員時,接收給人員那一份的地址
Notify customer: new, confirmed, cancelled寄給客戶的每一封信各一個開關
Notify staff: new, cancelled寄給人員的每一封信各一個開關
Reminder hours在預約開始前多少小時寄出提醒
Reminder recipients提醒寄給客戶、人員,還是兩者都寄

14. 疑難排解

彈窗打開之後一個人都沒有。 沒有人員被指派到那項服務。 「指派人員」是服務上的欄位,不是人員上的。 狀態為 On Vacation 或 Inactive 的人員同樣不會被提供。

日曆上每一天都不可選。 先檢查工作日,再檢查那位人員的自訂時間, 最後檢查最短提前時間。最短提前時間長於最長提前天數時,一天可預約的都不會剩下。

一天當中間有時段不見了。 休息時段不接受預約; 而一個「時長加緩衝會超出當天工作結束時間」的開始時間不會被提供。

時間的格式不對。 General 底下的 Time format 套用於外掛渲染的每一個時間,郵件也包含在內。

提醒信沒有寄到。 提醒信跑在 WP-Cron 上。請確認 wp-cron.php 真的有被呼叫, 不論是靠站台流量還是靠一個真正的排程工作。

訪客預約完看到一堵登入牆。 已在 1.5.5 修正。在那之前,轉址帶著預約編號, 而沒有任何一端讀它。1.5.5 以後,轉址的頁面會顯示剛剛完成的那一筆預約。

本手冊中的截圖由本目錄中的規格重新產生,對應的外掛版本記錄在 `img/shot-meta.json`。