موقعكم لا يمكن تحديثه. حاول أحدهم مرة، فانكسر شيء، وصارت التعليمات منذ ذلك الحين أن يترك كما هو. والسبب في الغالب إضافة واحدة — لا يتذكر أحد عادة أنه اختارها — صارت بهدوء هي ما يعتمد عليه الموقع.
وهذا شرح لكيفية حدوث ذلك، ولكيفية معرفة أي إضافة هي في موقعكم أنتم خلال ساعة تقريبا، وللخروج من الوضع دون إعادة بناء. ولا يتطلب شيء منه أن تكونوا تقنيين، وكله أرخص من البديل، وهو أن تعرفوا الإجابة أثناء حادثة.
كيف تصير الإضافة حاملة للبناء
الإضافات يفترض أن تكون إضافات. والإضافة حسنة السلوك تطفأ فيفقد الموقع خاصية فقط. وتبدأ المشكلة حين تتوقف الإضافة عن كونها إضافة وتصير المكان الذي يعيش فيه محتواكم.
وآليتان تسببان معظم الضرر، وكلتاهما سلوك ووردبريس عادي وموثق لا شيء خفي فيه. ولا واحدة منهما عيب في الإضافة نفسها، وهذا هو المربك: الإضافة تفعل بالضبط ما وعدت به، والمشكلة في ما لم يقله أحد عن نتائج ذلك بعد ثلاث سنوات.
الأولى جداول الإضافة الخاصة في قاعدة البيانات. وووردبريس يسمح بذلك صراحة: يعرض الدليل كيف تنشئ الإضافة جداولها عند التفعيل وعليها أن تكتب إجراءات ترقيتها بنفسها. وذلك صحيح لنظام حجز أو مسجل نماذج. ويعني أيضا أن تلك الحجوزات وتلك الطلبات وذلك الكتالوج ليست في مقالاتكم وصفحاتكم، وأن تصدير ووردبريس القياسي لن يحتويها.
والثانية الشفرات المختصرة. ويصفها الدليل بدقة: الشفرة المختصرة نص مختصر يخزن داخل محتوى المقالة، ولا تضاف أي بنية إلى المحتوى. وهو أنيق حتى تختفي الإضافة، فتعرض كل صفحة استعملتها نص الشفرة خاما أمام زواركم. وقد رأى معظم الملاك ذلك دون أن يعرفوا ما ينظرون إليه.

العطل هو الهجر لا الاختراق
الصورة الذهنية عند معظم الملاك هي مخترق. والحدث الحقيقي أبلد: يتوقف مؤلف الإضافة عن نشر التحديثات، ويستمر كل شيء آخر في التحرك. وإرشادات ووردبريس نفسها توضح أن ذلك متوقع، إذ تحتفظ بحق سحب وصول المطور إلى الإضافة لصالح مطور جديد نشط. وتلك الآلية موجودة لأن الهجر أمر طبيعي.
والحجم موثق. فمراجعة باتشستاك للمنظومة سجلت 7966 ثغرة جديدة في ووردبريس خلال 2024، منها 96 بالمئة في الإضافات، مع إزالة 1614 إضافة وقالبا من المستودع. ولا شيء من ذلك تقريبا يخص ووردبريس نفسه.
وهو ينطبق على التصنيف الأمني القياسي لا على خصوصية في ووردبريس. فاستعمال مكونات قديمة أو غير مصانة بند مستقل في قائمة أواسب العشرة، والمكونات غير المصانة مذكورة فيه صراحة. وموقعكم برنامج مركب من قطع صنعها آخرون، وهذا هو الخطر المصاحب لذلك.
الساعة التي تخبركم أين تقفون
افتحوا شاشة الإضافات واصنعوا قائمة من أربعة أعمدة. كل إضافة، وماذا تفعل بكلماتكم أنتم، وهل يظل الموقع يعمل بدونها، ومتى حدثت آخر مرة.
واكتبوها في ملف خارج الموقع. فالقائمة نفسها وثيقة مفيدة عند تغيير المورد، وعند تجديد الاستضافة، وعند أي حادثة، وهي أول ما يطلبه أي شخص جديد يتسلم الموقع.
ثم ضعوا حرفا أمام كل واحدة. أ للتجميلية: تحذفونها فتبدو صفحة أسوأ قليلا. ب للوظيفية: تحذفونها فتتوقف خاصية ولا يضيع شيء. ج للحاملة: تحذفونها فيختفي محتوى أو سجلات أو تخطيط صفحات قائمة.
ولا تسألوا المورد عن هذا التصنيف، بل صنفوا أنتم. المورد يعرف ما تفعله الإضافة تقنيا، وأنتم وحدكم تعرفون ما الذي يتوقف في العمل حين تتوقف هي. والفرق بين الوصفين هو الفرق بين قائمة تقنية وقائمة قرارات.
وتبحثون عن تقاطع «ج» مع تاريخ تحديث أقدم من سنة. تلك هي الإضافة التي تحتجز موقعكم، وهي واحدة عادة. وإن كانت ثلاثا، فالقراءة الصادقة أن الموقع يحتاج خطة لا إصلاحا.
وفحصان إضافيان يستحقان الدقائق. هل يوجد في القائمة ما يكرر عمل غيره، وهو شائع بعد سنوات وموردين متعاقبين. وهل شيء تجاري مرخص لبريد لا يسيطر عليه أحد في شركتكم، لأن الإضافة غير المرخصة تتوقف عن تلقي التحديثات دون أن تعلن ذلك.
الاثنتان الموجودتان في القائمة دائما تقريبا
في المواقع التي نظرت فيها، تفسر الفئتان نفسهما معظم حالات الاحتجاز، ويستحق الأمر معرفتهما قبل الجرد.
الأولى ما يجمع الطلبات. إضافات نماذج التواصل تخزن الإرساليات في جداولها الخاصة، والشركة العاملة منذ خمس سنوات لديها خمس سنوات من الطلبات داخل واحدة منها. ولا يفكر أحد في ذلك بوصفه محتوى حتى يحاول نقله. وإن لم تكن طلباتكم ترسل أيضا إلى بريد تحتفظون به، فالإضافة هي النسخة الوحيدة حاليا، وهي نسخة لا تدخل في أي نسخة احتياطية للمحتوى ولا في أي تصدير عادي.
والثانية ما بنى التخطيط: شريط صور، أو معرض أعمال، أو باني أقسام، أو الحزمة التي وصلت مع قالب تجاري. وهذه هي حالات الشفرات المختصرة، وهي سبب عجز موقع يبدو سليما عن تغيير قالبه. والعلامة صفحة تعرض صحيحة أمام الزائر وتبدو شظايا شيفرة في المحرر.
وليست أي منهما خطأ. كلتاهما اختيار عادي كان صحيحا وقته ثم صار بنيويا لأن أحدا لم يكتب أنه بنيوي. وذلك هو الفرق بين قرار تصميم وقرار تطوير، وسبب حاجتهما إلى إجابتين منفصلتين حين يكلف أحد ببناء موقع.
الخروج، بالترتيب الذي ينجح

أخرجوا البيانات أولا قبل أن تمسوا شيئا. إن كان للإضافة تصدير فشغلوه وافتحوا الملف. وإن لم يكن، فبياناتها موجودة في قاعدة البيانات ويمكن استخراجها، وتلك مهمة صغيرة لمطور وهي المهمة التي تستحق الدفع. وانتبهوا إلى أن الإضافة يفترض أن تنظف بعدها عند الإزالة، فالدليل صريح في أن على الإضافة أن تحذف خياراتها وجداولها عند إلغاء التثبيت، وأن التعطيل لا يفعل ذلك. فالتعطيل آمن والحذف قد لا يكون. عطلوا ولا تحذفوا حتى تصير البيانات في مكان آخر.
ثم اعثروا على البديل وشغلوا الاثنين معا على نسخة من الموقع لا على الموقع الحي. وانقلوا المحتوى. واستبدلوا الشفرات المختصرة بكتل حقيقية، صفحة صفحة، وهو عمل ممل وهو العمل الفعلي. وبعد ذلك فقط أزيلوا القديمة، واحتفظوا بنسخة احتياطية أخذت قبل الإزالة.
ولموقع صغير هذا يوم أو يومان. ولموقع فيه بضع مئات من الصفحات تستعمل شفرات باني صفحات، هو مشروع فعلا، ويستحق أن يعرف قبل البدء لا في منتصفه.
والترتيب هنا ليس تفصيلا. أكثر ما رأيته يسوء هو أن يحذف أحدهم الإضافة القديمة أولا ظنا أن ذلك يبدأ العمل، فتختفي البيانات ويتحول المشروع من نقل إلى استرجاع من نسخة احتياطية. والنسخة الاحتياطية قد تكون موجودة، وقد لا يكون أحد اختبر استرجاعها قط.
ما تسألونه قبل تركيب الإضافة التالية
أربعة أسئلة، ثلاثون ثانية لكل واحد، وتمنع معظم ما سبق. واطرحوها قبل التركيب لا بعده، لأن إزالة إضافة في يومها الأول مجانية وإزالتها في سنتها الثالثة مشروع.
أين تخزن هذه بياناتها: في مقالات وصفحات عادية أم في مكان خاص بها؟ ومتى حدثت آخر مرة، وكم موقعا يستعملها؟ وهل تضع شفرات مختصرة داخل محتواي؟ وإن اختفت غدا، ماذا أخسر وماذا أفعل؟
وأضيفوا سؤالا خامسا إن كانت الإضافة ستلمس المال أو بيانات العملاء: من يستطيع الوصول إلى تلك البيانات من جهة المطور، وأين تخزن. الإجابة موجودة في سياسة الخصوصية للإضافة، ويقرأها عدد قليل جدا من الناس قبل التركيب.
والسؤال الأخير هو الانضباط كله. فكل ما تكون إجابته أنكم ستخسرون سجلات عملاء أو أن نصف الموقع سيعرض نصا خاما يحتاج قرارا واعيا لا نقرة. وذلك هو الحكم نفسه الذي يحكم الاختيار بين قالب وأداة بناء وبناء مخصص، وهو بالضبط ما ينبغي أن يغطيه عقد الصيانة نيابة عنكم بدل تركه لمن يصادف أنه مسجل الدخول. وإن لم يكن أحد يفعل ذلك الآن، فمكانه عمل ووردبريس قبل أن يصير مكانه حالة طارئة.
أسئلة متكررة
الإضافة ما زالت تعمل. لماذا نستبدلها ولا شيء معطل؟
لأن الإضافة ليست أول ما ينكسر. ووردبريس ولغة البرمجة والاستضافة كلها تتحرك، والإضافة غير المصانة تلتقي في النهاية بإصدار من أحدها لم تختبر معه قط. والعطل يصل بجدول شخص آخر، عادة أثناء تحديث روتيني لم يعد تأجيله ممكنا. واستبدالها وكل شيء يعمل يوم مخطط له. واستبدالها بعد أن تعطل أسبوع غير مخطط له.
مطورنا يقول إن التحديث سيكسر الموقع. هل هو محق؟
على الأرجح، وذلك وصف للمشكلة لا حل لها. والرد الصحيح ليس التوقف عن التحديث بل معرفة ما الذي ينكسر تحديدا. وذلك غرض النسخة التجريبية: استنسخوا الموقع، وشغلوا كل التحديثات هناك، وانظروا ما الذي يسقط. وساعة من ذلك تحول خوفا مفتوحا إلى قائمة مسماة، والقائمة أقصر من المتوقع دائما تقريبا.
هل الإضافة المدفوعة أأمن من المجانية؟
الدفع يشتري لكم دعما وسببا تجاريا يجعل المؤلف يستمر، وذلك يقلل خطر الهجر فعلا. ولا يقلل الارتهان، وقد يزيده، لأن الإضافات التجارية أميل إلى تخزين المحتوى في بنى خاصة بها. احكموا على الاثنتين بالطريقة نفسها: أين تعيش البيانات، وكم هي مصانة فعليا، وماذا يحدث لصفحاتكم إن توقفت. والسعر دليل لا إجابة.
كم إضافة ينبغي أن يكون في موقع عادي؟
لا يوجد عدد صحيح، ومطاردة عدد منخفض تسبب ضررها الخاص حين يحذف الناس أشياء كانوا يحتاجونها. والمهم شكل القائمة: معظمها من فئة «ب»، مصانة فعليا، وبأقل ما يمكن من فئة «ج». وموقع فيه عشرون إضافة مصانة وبند حامل واحد أفضل حالا من موقع فيه ست، إحداها هجرت قبل سنوات وتحمل كل طلب وصل يوما.
ليست لدينا نسخة تجريبية. هل هذه مشكلة؟
هي سبب كون التحديثات مخيفة، فنعم. ومعظم المستضيفين يوفرون النسخة التجريبية خاصية تدفعون ثمنها ولم تشغلوها قط، وحيث لا يوفرونها يمكن إنشاؤها بكلفة صغيرة. وإلى أن توجد واحدة، ينفذ كل تحديث مباشرة على موقع يخدم عملاء، بلا وسيلة لرؤية النتيجة أولا. وإعدادها عمل صغير أثره في طريقة العناية بالموقع غير متناسب مع حجمه.