هل فعلا تحتاج استخدام قالب ابن على موقعك كي يوفر لك كل التعديلات والمتطلبات التي تحتاجها، والتي لا يوفرها القالب الرئيسي، أو القالب الأب؟ هذا سؤال ربما تكون قد طرحته على نفسك أكثر من مره أثناء استخدامك لقالب معين، كيف ما كان نوعه، لكنه لم يكن يتوفر على جميع المواصفات التي تبحث عنها وكنت تتردد في كيفية القيام بالتعديلات عليه، والطريقة الصحيحة لذلك. بهذه المقالة سأتطرق ببعض من التفصيل عن القالب الابن “Child Theme” من ناحية المفهوم، وأيضا من الجانب التطبيقي حتى يتضح الغموض الذي قد يلف الأمر بالنسبة لك كمستخدم.
ما معنى قالب ابن (Child Theme) على ووردبريس؟
كما يدل اسمه، هو عبارة عن قالب ابن لقالب اخر، يسمى كذلك القالب الأب (Parent Theme)، هذه التسمية جاءت كتعبير مجازي لطريقة العمل التي يعتمد عليها القالب الابن، حيث أنه يعتمد في وجوده على القالب الأب، ويرث صفاته، تنسيقه ووظائفه كاملة.
لا بد أن يتوفر القالب الابن على الأقل على ملف تنسيق style.css
الذي يحمل بيانات أساسية عن القالب الأب، أهمها الاسم لكي يستطيع تحديد مصدر ملفات القالب التي يجب أن يستخدم لإظهار التنسيق وتفعيل الوظائف. هذه البيانات التي يتم إدراجها أعلى ملف التنسيق، على شكل تعليق كما يظهر على الشكل التالي:
<?php
/*
Theme Name: SB Child
Theme URI: https://saidelbakkali.com
Description: SaidElBakkali Child Theme
Author: Said El Bakkali
Author URI: https://saidelbakkali.com
Template: saidelbakkali
Version: 1.0.0
Text Domain: saidelbakkali
*/
/** Theme Child customization starts here */
المعلومات المذكورة في مقتطف الكود أعلاه تبقى متغيرة حسب معلومات القالب الأب، لجب البيانات والأكواد الخاصة به، لذلك فسيكون من الواجب تخصيصها حسب حاجياتك ليتم استدعاءها بشكل صحيح.
أغلب الأسطر المرفقة بالأعلى، تبقى اختيارية ويمكن الاستغناء عنها في حال لم تكن بحاجة إليها، لذكر المزيد من التفاصيل التي تكون مفيدة، خاصة للمطورين الذين يقومون بمراجعة القوالب وتحديثها بشكل دوري. هنالك سطرين إجباريين يحتويان معلومات ضرورية لكي يفهم نظام ووردبريس على أن الأمر يتعلق بقالب ابن وليس قالب جديد، وهما اللذان يحتويان على اسم القالب، والقالب الذي يعتمد عليه، أي القالب الأب، كما يظهر في الكود أسفله:
<?php
/*
Theme Name: SB Child
Template: saidelbakkali
*/
تقوم بحفظ ملف التنسيق style.css بمجلد يحمل اسم القالب الابن الذي تود أن تقوم بإنشائه، ثم ضغطه بامتداد .zip ورفعه على شكل قالب من خلال قسم القوالب على لوحة تحكم ووردبريس، أو رفعه مباشرة كمجلد عادي عبر بروتوكول نقل الملفات FTP على مجلد القوالب الذي يحمل اسم themes .
لماذا أستخدم قالب إبن؟
القالب الابن له فوائد عديدة، حيث أنه يمكنك من القيام بتعديلات، إضافات في الكود أو إزالة بعض مكونات القالب، عن طريق إدراج ملفات بالقالب الابن بنفس مسميات الملفات ذاتها المتواجدة بالقالب الأب، ذلك أن لملفاته الأولوية على ملفات هذا الأخير.
العديد من المطورين أصحاب القوالب والتي بالطبع أغلبها مدفوعة، يقومون بتحديثات دورية لها، لعدة أهداف أولها سد ثغرات أمنية، إضافة بعض الوظائف التطويرية، أو تعديلات على مكون من المكونات. وعند صدور نسخة جديدة للقالب، مباشرة بعد التحديث فإن جميع، أو أغلب الملفات القديمة، يتم حذفها واستبدالها بشكل الي بالجديدة، ما يجعل أي تعديل محتمل قمت به سابقا سيتم حذفه أيضا، وبالتالي تفقد كل التغييرات السابقة.
أمر مهم أريد أن أشير إليه، هو أن التنسيقات المتوفرة على القالب الأب يتم اعتبارها مكونا من ملف التنسيقات الخاص بالقالب الابن، وإدراج ملف style.css فارغ لا يعني أن كل تنسيقات القالب الرئيسي سيتم تجاهلها، بل تبقى كما هي، ما لم يتم إعطاء نفس العناصر تنسيقات جديدة على الابن. هذا الأمر ينطبق على ملفين اثنين فقط، وهما style.css وأيضا functions.php الذي يحتوي وظائف تقوم بأمور معينة، ففي حال قمت بإنشاء ملف وظائف على القالب الابن، فهذا الأمر لا يعني فقدان الوظائف الأساسية، المتوفرة على الأب، بل يتم اعتبارها كما لو كانت متواجدة، ما لم تقم بتغيير مباشر على وظيفة معينة من المتوفرة على القالب.
للإشارة إلى أمر يخص ملف التنسيق، هو أنه يتوجب أولا استيراد الملف الخاص بتنسيق القالب الاب على نفس الملف بالقالب الابن على الشكل التالي:
@import url(default.css);
جاء القالب الابن ليجنبك فقدان تلك التعديلات التي قد تكون إما بسيطة أو كبيرة جدا، حسب الحالة. استخدام القالب الابن يعتمد في وجوده كما قلنا على القالب الأب، ما يجعله يرث كل صفاته بشكل افتراضي، أما بالنسبة للتعديلات التي تود إجراءها، فقط تقوم بإنشاء الملف الذي تود التعديل عليه، ثم تقوم بكتابة كل التغييرات المرغوبة، بهذه الطريقة، أي تحديث مستقبلي سيشمل القالب الأب فقط، ولن يمس أي تغيير القالب الابن بغض النظر عن الملفات التي سيتم استبدالها بالرئيسي.
متى أستخدم القالب الابن؟
ليس من الضروري استخدام قالب ابن في كل الحالات، اتخاذ هذا القرار يعتمد على مدى التغييرات التي تود القيام بها وكذا الملفات التي قد تشملها. نحن بصدد الحديث عن ملفات معينة كانت السبب الرئيسي، ولا تزال، لأغلب استخدامات القوالب الابن، وهي القيام بتغييرات على مستوى التسبيق، أو المظهر الخارجي للقالب، وفي بعض الحالات التي يعمل عليها في الأغلب مطورون ومبرمجون، بهد التعديل أيضا على بعض الوظائف الأساسية للقالب، أو تطوير أداء الموقع، بإضافة بعض الأكواد على ملف من الملفات، وكذلك أيضا في حال الرغبة بالقيام بتعديل على هيكل جزء ما، كالترويسة header.php
.
إذا كانت رغبتك أو حاجاتك هي تعديل على مظهر القالب وتنسيقه ليس أكثر، فلن يكون هنالك داعي أو سبب لاستخدام ابن للقالب، من أجل تحقيق ما تريد، هنالك بدائل متوفرة لذلك، مثل استخدام إضافة تسمح بإدراج تنسيقات إضافية تكون لها أفضلية على التي تتواجد بالملف الرئيسي للقالب. كالعادة فريق ووردبريس فكر في هذا الأمر، بإدراج خاصية على إضافة Jetpack تسمح بكتابة تنسيق له الأولوية والأسبقية على التنسيقات الأخرى، هذه الوظيفة تدعى “تخصيص CSS
” ويمكن تفعيلها عن طريق رابط “الإعدادات” بنفس الإضافة.
ما يجعل هذه الخاصية جميلة وسلسة في التعامل، هو كونها تقوم بتلوين التنسيق كما لو أن الأمر يتعلق بمحرر أكواد مكتبي، مما يقلص مساحة الخطأ التي يقع فيها جميع المكودين والمبرمجين.
هنالك بعض القوالب، توفر قسما لتخصيص القالب حسب حاجيات المستخدم، وتوفر أيضا إما حقلا لإضافة تنسيق مخصص، أو حتى محرر متقدم شيء ما لعمل التعديلات المرغوبة. أما إذا كانت حاجياتك تتجاوز التنسيق لتشمل التعديل على جوهر القالب ووظائفه، سيكون من الضروري عليك استخدام قالب فرعي عن القالب الرئيسي، حتى يكون تعاملك سليما وذكيا مع ووردبريس، ما سيجعلك توفر وقتا ثمينا أمضيته في هذه التعديلات.
إيهاب قال
هل يستلزم تنصيب القالب الإبن وجود تنصيب سابق للقالب الأب؟
المقال رائع ولكن التبس علىّ الأمر.
كذلك ما هى التعديلات التى قد تضطر إلى القالب الإبن؟