حجز المواعيد في WordPress
بلا خانات وهمية.
يدير OW Agenda الحجز عبر الإنترنت، والمصادقة، والتذكيرات، وأجندة الممارس اليومية. كل طلب يرسله زائر يجب أن يُؤكَّد برابط يصل إلى عنوان بريده الإلكتروني قبل أن يشغل مكانًا: البوت لا يبلغ جدولك أبدًا. مجاني، GPL، بلا نسخة Pro.
لماذا إضافة مواعيد أخرى؟
على موقع عيادة، نموذج حجز موصول بلا ضوابط يخلق من العمل أكثر مما يوفّر. أي بوت يملأ جدولًا مفتوحًا للعموم، ومن يردّ على الهاتف يقضي يومه في فرز المواعيد الحقيقية عن طلبات لم توجد قط.
الإضافات الراسخة تعمل، لكنها مبنية كلها على النموذج نفسه: نسخة مجانية مقيَّدة عن قصد — موظف واحد، موقع واحد، حفنة خدمات — واشتراك سنوي لاستعادة الاستعمال الطبيعي للبرنامج. وبالنسبة إلى ممارس يعمل بمفرده، فالمدفوع أساسًا هو حق الخروج من النسخة التجريبية.
ينطلق OW Agenda من عيادة حقيقية ومن ثلاثة قيود: الطلب لا يوجد إلا بعد التأكيد بالبريد الإلكتروني، وزائران لا يمكنهما حجز الخانة نفسها، والأجندة يجب أن تُدار وقوفًا بين مريضين، على هاتف. أما البقية — دليل العملاء، والدعوات، وICS، والتذكيرات — فتنبع من هذه القواعد الثلاث.
بلا مصادقة بالبريد الإلكتروني، النموذج المفتوح جدولٌ تملؤه البوتات مجانًا. هنا يبقى الطلب معلَّقًا، ويحتجز الخانة 45 دقيقة، ثم يختفي من تلقاء نفسه إن لم يُنقر الرابط أبدًا.
زائران على الخانة نفسها بفارق ثلاث ثوانٍ: معاملة MySQL بسيطة لا تضع أي قفل صفّي وتسجّل كليهما. أما OW Agenda فيسلسل الحجز بقفل مُسمّى — فيتلقى الثاني رسالة، لا نسخة مكرَّرة.
بين مريضين، لا أحد يفتح wp-admin على هاتف. الإدارة تجري على صفحة من موقعك محمية بتسجيل الدخول: عرض اليوم، والطلبات المعلَّقة، وإعادة الجدولة، وحالتا «تم» و«تخلَّف عن الحضور»، ببضع لمسات إبهام.
ما يتغير فعلياً
لا شعارات. هذه هي القرارات التقنية التي تميز هذا المنتج.
الشورت-كود [ow_agenda] يعرض الأيام الأربعة عشر المتاحة القادمة، ثم الساعات الشاغرة: اختيار اليوم، ثم الخانة، ثم نموذج قصير (الاسم، الهاتف، البريد الإلكتروني، الرسالة) وخانة موافقة GDPR. أنت تضبط دقة الخانات، ومدة الاستشارة، والفاصل بين موعدين، والمهلة الدنيا، وأفق الحجز. وكل حدث في أجندتك — حجز من الويب، موعد هاتفي مُدخَل يدويًا، فترة محجوبة — يسحب مجاله الزمني من قائمة المتاح.
يبقى طلب الزائر غير مُتحقَّق منه ما دام الرابط الواصل بالبريد الإلكتروني لم يُنقر. يحتجز الخانة 45 دقيقة، ثم يُحذف تلقائيًا. وقبل ذلك، حقل الفخّ والطابع الزمني للنموذج إلزاميان — إغفالهما لم يعد يعطّل شيئًا —، والحصة بالساعة تُحسب لكل عنوان IPv4 ولكل بادئة /64 في IPv6، وسقفٌ يحدّ الطلبات غير المؤكَّدة في اليوم الواحد.
رسالة الإشعار تحمل زرّين، «تأكيد» و«رفض»، روابطهما موقَّعة بـ HMAC-SHA256: تقرّر بضغطة واحدة، دون فتح WordPress ودون تسجيل دخول. المصادقة اليدوية هي الوضع الموصى به؛ والتأكيد التلقائي يبقى متاحًا للأنشطة التي لا شيء فيها يحتاج إلى ترجيح.
الشورت-كود [ow_agenda_admin] ينشئ صفحة «الأجندة» على موقعك، محمية بتسجيل الدخول وبصلاحية مخصَّصة: عرض اليوم، والطلبات المعلَّقة، وإضافة موعد مأخوذ عبر الهاتف، وحجب الخانات، وإعادة الجدولة، وحالتا «تم» و«تخلَّف عن الحضور». وإذا أضفتها إلى شاشة هاتفك الرئيسية، تصرّفت كتطبيق.
بحث وإنشاء وتحرير وحذف لبطاقات العملاء، تتغذى تلقائيًا من المواعيد المؤكَّدة. ولجلسة متابعة، يترك رابط خاص باسم العميل له اختيار تاريخه بنفسه، ضمن خدمة ومدة تحدّدهما أنت: الدعوة تنتهي صلاحيتها، وتُستهلك مرة واحدة فقط، وتعود صالحة إذا أُلغي الموعد.
رسائل HTML أنيقة في كل مرحلة، مع ملف ICS مرفق: عميلك يضيف الموعد إلى تقويم هاتفه بحركة واحدة، وإعادة الجدولة تحدّث المدخل، والإلغاء يحذفه. تذكير اليوم السابق ينطلق ضمن نافذة منزلقة من 12 إلى 36 ساعة ويستدرك تأخره في التنفيذ التالي؛ والمهمة الساعية تعيد جدولة نفسها إن اختفت.
مقابل البدائل
بيانات قابلة للتحقق. لا نُؤشّر إلا ما هو موجود فعلاً لدى المنافس.
| المعيار | OW Agenda | Amelia | Bookly | Simply Schedule Appointments |
|---|---|---|---|---|
| نموذج العمل | مجاني، GPL-2.0 | Freemium (نسخة Pro مدفوعة) | Freemium (نسخة Pro مدفوعة) | Freemium (نسخة Pro مدفوعة) |
| قيود النسخة المجانية | لا قيود: كل شيء مضمَّن | Lite: موظف واحد، موقع واحد | 5 خدمات، موظف واحد | وظائف أساسية |
| مفتاح ترخيص يجب تفعيله | لا يوجد | للنسخة Pro | للنسخة Pro | للنسخة Pro |
| تأكيد مزدوج بالبريد قبل شغل الخانة | مفعَّل افتراضيًا | غير معلن | غير معلن | غير معلن |
| التأكيد / الرفض من البريد، دون تسجيل دخول | روابط موقَّعة HMAC-SHA256 | نعم | غير معلن | غير معلن |
| ملف ICS مرفق برسائل العميل | REQUEST والتحديثات وCANCEL | |||
| إخفاء تلقائي لهوية المواعيد المنتهية | مضمَّن، بمهلة قابلة للضبط | غير معلن | غير معلن | غير معلن |
| الإدارة اليومية | صفحة في الموقع، للهاتف أولًا | لوحة تحكم WordPress | لوحة تحكم WordPress | لوحة تحكم WordPress |
ثلاث طرق لدمج نموذج
لا أداة بناء صفحات مفروضة. اختر النهج الذي يناسب الـstack الخاص بك.
[ow_agenda]
// La page « Prendre rendez-vous » est créée automatiquement à l'activation.
// Le même shortcode sert aux invitations de séance : le lien privé envoyé
// à un client existant pointe vers cette page avec son jeton en paramètre.
//
// https://ton-site.be/prendre-rendez-vous/?owag_invite=<jeton>شكوك مشروعة، إجابات مباشرة
نعم. كل ما يرد في أجندتك يشغل الوقت الذي يستغرقه: حجز من الويب، موعد أُدخل يدويًا بعد مكالمة، فترة محجوبة لاجتماع. حساب التوفّر ينطلق من ساعات عملك، ويطرح هذه الفترات، ثم يطبّق مدة الخدمة، والفاصل بين موعدين، والمهلة الدنيا قبل الحجز، والأفق الأقصى. الخانة المعروضة خانة شاغرة فعلًا.
بطلبٍ لا وجود له ما لم يُؤكَّد. يتلقى الزائر رابط مصادقة؛ ومن دون نقر، يحتجز طلبه الخانة 45 دقيقة ثم يُحذف. ويُضاف إلى ذلك حقل فخّ وطابع زمني صارا إلزاميين — فالإرسال الذي يغفلهما يُرفض بدل أن يمرّ بلا رقابة —، وحصة بالساعة لكل عنوان IP (مجمَّعة حسب بادئة /64 في IPv6، حيث يملك جهاز واحد لولا ذلك مليارات العناوين)، وسقفٌ للطلبات غير المؤكَّدة في اليوم الواحد، حتى لا يستطيع زائر واحد تجميد أجندتك كلها.
حجز واحد فقط ينجح. المقطع الحرج مُسلسَل بقفل MySQL مُسمّى: التحقق من التوفّر والكتابة يجريان تحت القفل، وهو ما لم تكن معاملة بسيطة تضمنه — فالقراءة المجرَّدة لا تضع أي قفل صفّي في REPEATABLE READ. اسم القفل مشتق من قاعدة البيانات ومن بادئة الجداول، حتى لا يعطّل موقعان على الاستضافة المشتركة نفسها أحدهما الآخر. أما الزائر الثاني فيتلقى دعوة إلى اختيار خانة أخرى.
نعم، عبر الرابط الموجود في رسائله، حتى مهلة الإشعار التي تحدّدها أنت (24 ساعة افتراضيًا)؛ وبعدها تدعوه الصفحة إلى الاتصال بك. الإلغاء يرسل ملف ICS إلغاء يزيل الحدث من تقويمه، وإذا كان الموعد ناتجًا عن دعوة خاصة، فإن هذه الدعوة تعود صالحة للاستعمال بدل أن تبقى مستهلَكة إلى الأبد.
افتح صفحة «الأجندة» في موقعك على الهاتف، سجّل الدخول، ثم استعمل «إضافة إلى الشاشة الرئيسية». عندها تتصرف الواجهة كتطبيق: يوم العمل الجاري، والطلبات التي تنتظر التأكيد، وإضافة موعد هاتفي، وحجب خانة، وإعادة الجدولة، وحالتا «تم» و«تخلَّف عن الحضور». بلا تثبيت، وبلا متجر تطبيقات، وبلا شيء يخرج من استضافتك.
نعم. منذ الإصدار 1.3.1، كل السلاسل المرئية — الإعدادات، وصفحتا الحجز والإلغاء، ورسائل الـ API، وقوالب البريد الإلكتروني، وواجهة JavaScript — تمرّ عبر نطاق الترجمة ow-agenda، والإنجليزية هي اللغة المصدر. القالب languages/ow-agenda.pot مُرفق للمترجمين، وقد أُنتجت ترجمة فرنسية كاملة ثم قُدِّمت إلى translate.wordpress.org.
لا نسخة Pro، ولا مفتاح ترخيص.
OW Agenda منشور بترخيص GPL-2.0. كل ما تصفه هذه الصفحة موجود في ملف .zip الذي تنزّله: لا ميزة محجوزة، ولا اشتراك، ولا حدّ لعدد المواعيد أو الموظفين أو الخدمات.
- كل شيء مضمَّن: الحجز عبر الإنترنت، والتأكيد المزدوج، ودعوات الجلسات، ودليل العملاء، ورسائل ICS، والتذكيرات.
- ملف .zip يُنزَّل من optionweb.dev. الإضافة غير منشورة على wordpress.org: ثبّتها عبر الإضافات → إضافة جديدة → رفع إضافة.
- لا خدمة طرف ثالث، ولا تحقق من ترخيص، ولا أداة تتبّع: بيانات عملائك تبقى على استضافتك.
- الكود تحت GPL-2.0، مقروء وقابل للتعديل: يمكنك تدقيقه وتكييفه وتطويره، معنا أو من دوننا.