في بيئة ووردبريس (WordPress)، تعتبر الثيمات الفرعية (Sub-Themes) الأساس الآمن لتخصيص المواقع الإلكترونية وتحديثها وصيانتها. فهي تسمح لك باستخدام جميع ميزات وأنماط وملفات القوالب الخاصة بالثيمة الأم (Parent Theme)، مع إمكانية إجراء التعديلات عليها في دليل منفصل. وهذا يعني أنه عندما تصدر الثيمة الأم تحديثات أمنية أو تحسينات جديدة، يمكنك تحديث موقعك بنقرة واحدة دون القلق من تغطية الكود المخصص الذي قمت بكتابته بعناية. سواء كان الأمر يتعلق بتعديل الألوان، أو تغيير التصميم، أو إضافة ميزات معقدة، فإن استخدام الثيمات الفرعية يعتبر
لماذا يجب استخدام المواضيع الفرعية (subtopics)؟
تعديل ملف الموضوع الأصلي مباشرة يعتبر عملية ذات مخاطر عالية. ففي حال تم تحديث الموضوع الأصلي، ستضيع جميع التعديلات التي أجريتها، وسيتعين عليك إعادة تطبيقها يدويًا، وهو عملية قد تكون مليئة بالأخطاء وتستغرق وقتًا وجهدًا كبيرين. الأهم من ذلك، أن عدم وجود سجلات واضحة للتعديلات يمكن أن يسبب مش
تم حل هذه المشكلة من خلال آلية “التغطية” (overlay). عندما يقوم ووردبريس بتحميل صفحة ما، يبحث أولاً عن ملف القالب المطلوب في دليل الثيمات الفرعية (sub-themes). إذا تم العثور على الملف، يتم استخدام نسخة الثيمة الفرعية؛ وإذا لم يتم العثور عليه، يعود تلقائياً إلى نسخة الثيمة الرئيسية (parent theme). تسمح لك هذه الآلية بتعديل الأجزاء التي تحتاجها فقط، بينما تستمر باستفادة باقي أجزاء الموقع من تحديثات وصيانة الثيمة الرئيسية.
القراءة الموصى بها دليل للبدء في تطوير مواقع ووردبريس: إنشاء موضوعك الأول من الصفر。
بالإضافة إلى ذلك، استخدام المواضيع الفرعية (subtopics) هو ممارسة موصى بها رسميًا من قبل ووردبريس (WordPress)، حيث أنها تساعد في الحفاظ على نظامية الكود وسهولة صيانته، وتعتبر علامة على التطوير المهني.
الهيكل الأساسي لإنشاء موضوع فرعي (Subtopic)
إنشاء موضوع فرعي (sub-topic) أمر بسيط للغاية، ويتطلب فقط ملفين أساسيين: قائمة أنماط (style sheet) وملف للدوال (function file). أولاً، يجب عليك… /wp-content/themes/ يتم إنشاء مجلد جديد داخل المجلد الرئيسي، وعادة ما يُسمى هذا المجلد بـ “اسم الموضوع الرئيسي-الفرعي” (Parent Topic Name-Child). على سبيل المثال: twentytwentyfour-child。
إنشاء ملف قائمة الأنماط الأساسية (Core Style Sheet File)
جوهر الموضوع الفرعي (التابع) يكمن في ملف قواعد التنسيق (الستايل شيت) الخاص به. style.cssهذا الملف لا يحتوي فقط على قواعد CSS، بل الأهم من ذلك هو تعليقات رأس الملف (header comments)، والتي تُستخدم لإخبار ووردبريس (WordPress) بأن هذا موضوع فرعي (sub-theme) وما هو الموضوع الأصلي (parent theme) الخاص به.
/*
Theme Name: Twenty Twenty-Four Child
Theme URI: https://example.com/twentytwentyfour-child/
Description: Twenty Twenty-Four Child Theme
Author: Your Name
Author URI: https://example.com
Template: twentytwentyfour
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: twentytwentyfour-child
*/ من بينها،Template: هذا السطر في غاية الأهمية؛ يجب أن يكون قيمته مطابقة تمامًا لاسم مجلد الموضوع الأب (parent theme)، مع الأخذ بعين الاعتبار اختلاف حروف الأحرف الكبيرة والصغيرة. هذا هو الأساس الذي يعتمد عليه وور
إدخال جدول أنماط الموضوع الأب (Parent Theme Style Sheet)
لا يمكن للموضوع الفرعي تحميل أنماط الموضوع الرئيسي إلا إذا كانت الملفات المذكورة أعلاه موجودة فقط؛ يجب عليك إضافة الكود اللازم إلى ملف الدوال الخاص بالموضوع الفرعي. functions.php استخدمه في wp_enqueue_scripts يتم استخدام “الخطافات” (hooks) لترتيب تحميل ملفات أنماط الموضوع الأصلي (parent theme).
القراءة الموصى بها مطلوب لإنشاء موقع إلكتروني محترف: دليل شامل لتطوير و تخصيص قوالب ووردبريس.。
<?php
add_action( 'wp_enqueue_scripts', 'my_child_theme_enqueue_styles' );
function my_child_theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( 'parent-style' ),
wp_get_theme()->get('Version')
);
}
?> get_template_directory_uri() الدالة تحصل على عنوان URL لمجلد الموضوع الأب (الرئيسي). get_stylesheet_directory_uri() للحصول على عنوان URL لدليل المواضيع (المواضيع الفرعية) الحالية، يمكن استخدام مصفوفة الاعتمادات (dependency array). array( 'parent-style' ) تأكد من أن أنماط المواضيع الفرعية (sub-topics) تتم تحميلها بعد أنماط الموضوع الرئيسي (parent topic)، حتى تتمكن قواعد CSS المخصصة الخاصة بك من تغطية أنماط الموضوع الرئيسي بشكل صحيح.
توسيع وظائف الفروع الفرعية (Subtopics)
بعد إنشاء الهيكل الأساسي، يمكنك الاستمرار في تطوير المشروع من خلال… functions.php هذا الملف يوفر ميزة التوسعة اللامحدودة لموقع الويب؛ الكود الموجود فيه سيتم تنفيذه قبل تنفيذ الكود الموجود في الموضوع الرئيسي (الموضوع الأصلي للموقع). functions.php تنفيذ الملف يوفر لك فرصة رائعة لتعديل الوظائف الأساسية (الميزات الأساسية) للنظام أو التطبيق.
ميزات موقع الويب المخصصة
على سبيل المثال، قد ترغب في إضافة نوع مقال جديد مخصص إلى موقعك الإلكتروني يسمى “المشروع”. يمكنك القيام بذلك ضمن إعدادات المواضيع الفرعية (subtopics). functions.php قم بتسجيله في الملف.
add_action( 'init', 'register_project_post_type' );
function register_project_post_type() {
$args = array(
'public' => true,
'label' => '项目',
'has_archive' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
'menu_icon' => 'dashicons-portfolio',
);
register_post_type( 'project', $args );
} في الوقت نفسه، يمكنك أيضًا إزالة بعض الميزات غير الضرورية الموجودة في الموضوعات الأبوية. على سبيل المثال، إذا أضاف الموضوع الأبوي أداة قائمة سفلية (footer widget) لا تريدها من خلال دالة معينة، فيمكنك استخ remove_action() لإلغائه، لنفترض أن الموضوع الأصلي (الموضوع الأب) موجود… init يُستخدم على الخطاف. parent_theme_footer_widgets تم إضافة أداة صغيرة إلى الدالة، ويمكنك إزالتها بالطريقة التالية:
add_action( 'after_setup_theme', 'remove_parent_theme_features', 15 );
function remove_parent_theme_features() {
remove_action( 'init', 'parent_theme_footer_widgets' );
} ملاحظة: يتم استخدام… هنا. after_setup_theme تم استخدام “الخطاف” (hook) وتم تعيين أولوية أعلى قليلاً (مثل 15) للتأكد من أن كود الموضوع الأصلي (الموضوع الأب) قد تم تنفيذه بالفعل. add_actionهكذا، لدينا… remove_action لكي يصبح ساري المفعول.
تغطية ملف قالب الموضوع الأصلي
إحدى أقوى ميزات القوالب الفرعية (الـ Sub-Themes) هي القدرة على تغيير محتويات ملفات القوالب الأصلية (الـ Parent Themes). إذا كنت ترغب في تعديل طريقة عرض صفحة المقال الفردية، كل ما عليك فعله هو تعديل الملف single.php قم بنسخ الملف إلى دليل المواضيع الفرعية الخاصة بك، ثم قم بتعديله. سيقوم ووردبريس تلقائيًا باستخدام الإصدار الذي قمت بتحميله.
القراءة الموصى بها إطلاق العنان للإمكانيات: استكشاف التقنيات الأساسية وأفضل الممارسات لبناء مواقع ووردبريس المتقدمة。
للحصول على تحكم أدق، يمكنك حتى تغيير مكونات القوالب (Template Parts) أو أجزاء معينة من القوالب. على سبيل المثال، إذا أردت تعديل طريقة عرض بيانات المقالة الوصفية، يمكنك نسخ المكونات المطلوبة من الموضوع الأصلي وتعديلها. template-parts/content-post-meta.php يتم وضع الملف في نفس المسار الخاص بالموضوع الفرعي.
المهارات المتقدمة في تطوير المواضيع الفرعية (Subtopics)
عندما يدخل تطوير الأفكار الفرعية (الـ subtopics) مرحلة أكثر احترافية، ستواجه مواضيع متقدمة مثل الترجمة المحلية (localization)، ووراثة خيارات القوالب (theme option inheritance)، وتحديث الأفكار الفرعية نفسها (subtopic updates).
تنفيذ ترجمة النصوص محليًا
لكي تتمكن مواضيعك الفرعية (Subtopics) من دعم اللغات المتعددة، يجب عليك ضبط حقول النصوص (Text Fields) بشكل صحيح واستخدام دوال الترجمة (Translation Functions). style.css الرأس و functions.php الخطوة الأولى هي تحميل حقل النصوص (text field).
في functions.php في الوسط، يتم استخدام… load_child_theme_textdomain دالة:
add_action( 'after_setup_theme', 'child_theme_localization_setup' );
function child_theme_localization_setup() {
load_child_theme_textdomain( 'twentytwentyfour-child', get_stylesheet_directory() . '/languages' );
} بعد ذلك، استخدم عبارات مثل “...” في الأماكن التي تحتاج إلى ترجمة. esc_html__( 'Your Text', 'twentytwentyfour-child' ) مثل هذه الطريقة لتغليف الدوال… بعد ذلك، يمكنك استخدام أدوات مثل Poedit لإنشاء الملفات الناتجة. .po و .mo قم بترجمة الملف واحفظه في الموضوع الفرعي. /languages/ الفهرس.
تعديل الدوال الأساسية بشكل آمن
أحيانًا، قد تحتاج إلى تعديل دالة معقدة موجودة في الموضوع الأصلي (Parent Theme)، ولكن هذه الدالة لا توفر مرونة كافية من خلال المكونات المساعدة المعروفة باسم “الهوكات” (Hooks). إذا كانت هذه الدالة “قابلة للتوصيل” (Pluggable)، أي يمكن تعديلها أو استبدالها بدالة أخر if ( ! function_exists( ... ) ) إذا كان لديك حزمة، فيمكنك إدراجها في موضوع فرعي. functions.php يمكن إعادة تعريف الدالة مباشرةً في المكان نفسه، مما يؤدي إلى تغطيتها بالكامل.
قبل محاولة هذه العملية، يرجى التأكد من طريقة تعريف الدوال (functions) داخل الموضوع الأصلي (parent topic). إذا لم تكن هذه الدوال قابلة للتوصيل أو الاستخدام بشكل مستقل (pluggable)، فإن إعادة تعريفها بالقوة قد تؤدي إلى أخطاء خطيرة (fatal errors). في مثل هذه الحالة، الطريقة الأكثر أمانًا هي الات
الملخصات
إن بناء الثيمات الفرعية (sub-themes) لـ WordPress يعتبر مهارة أساسية يجب أن يتقنها كل مطور ويب محترف. فهو يساعد في إنشاء عملية تخصيص آمنة ومستدامة، حيث يتم فصل الكود الخاص بك عن الكود الأساسي للثيمة بشكل واضح. يبدأ الأمر بإنشاء ملفات الثيمة الفرعية التي تحتوي على المعلومات الرئ style.css والذي يقوم بتحميل الأنماط… functions.php ابدأ بتغيير ملفات القوالب الأساسية، ثم قم بتوسيع وظائف الموقع، وبعد ذلك اعتنِ بعمليات الترجمة والتكييف المتقدمة للمحتوى. في كل خطوة، تتبع أفضل ممارسات ووردبريس (WordPress). الالتزام الدائم باستخدام القوالب الفرعية (subthemes) يشكل أساسًا متينًا لضمان أن موقعك سيظل محدثًا مع التحديثات الجديدة، وفي نفس الوقت يحافظ على مظهره
الأسئلة الشائعة الأسئلة المتداولة
ما هي متطلبات أسماء مجلدات المواضيع الفرعية؟
لا توجد قيود صارمة على أسماء مجلدات المواضيع الفرعية، ولكن من أجل الوضوح والسهولة في الفهم، يُنصح عادةً باستخدام التنسيق “اسم الموضوع الرئيسي-الموضوع الفرعي”, مثل: astra-childالنقطة الرئيسية هي… style.css In the file header Template: يجب أن يكون قيمة هذا الحقل مطابقة تمامًا لاسم مجلد الموضوع الأب، بما في ذلك حروف الأحرف الكبيرة والصغيرة، وإلا فلن تتمكن ووردبريس من إنشاء العلاقة بين الموضوع الأب والموضوع الفرعي بشك
هل جميع المواضيع الرئيسية تدعم إنشاء مواضيع فرعية؟
معظم المواضيع الحديثة التي تتبع معايير ترميز ووردبريس (WordPress Coding Standards) تدعم المواضيع الفرعية (subthemes) بشكل كامل. نظريًا، يمكن أن يكون أي موضوع بمثابة موضوع أب (parent theme). ومع ذلك، قد تواجه بعض المواضيع ذات التصميم السيء أو التي تعود إلى فترات قديمة مشاكل في عمل المواضيع الفرعية بسبب استخدامها لمسارات مطلقة للموارد أو نقص ملفات القوالب الضرورية. من الحكمة مراجعة وثائق الموضوع أو تقييمات المستخدمين عند اختيار موضوع أب.
كيفية نقل الموضوع الأصلي (الأب) الذي تم تعديله مباشرةً إلى موضوع فرعي (ابن)؟
أولاً، في بيئتك المحلية أو الاختبارية، قم بإنشاء موضوع فرعي جديد يعتمد على الموضوع الأصلي غير المعدل. بعد ذلك، قارن بين ملفات الموضوع الأصلي وملفات الموضوع الفرعي التي قمت بتعديلها واحدًا تلو الآخر لتحديد الاختلافات. قم بنقل هذه الاختلافات (سواء كانت في CSS أو PHP أو HTML) بشكل منظم إلى الملفات المقابلة في الموضوع الفرعي: ضع ملفات CSS في الموضوع الفرعي، وملفات PHP في الموضوع الفرعي، وملفات HTML في style.cssيتم وضع كود الوظيفة هنا. functions.phpيتم نسخ ملفات القوالب المعدلة إلى دليل الموضوع الفرعي ثم إجراء التغييرات اللازمة عليها. هذه عملية دقيقة ومتكررة، لكنها توفر الوقت والجهد على المدى الطويل.
هل تؤثر الموضوعات الفرعية على سرعة الموقع؟
تأثير إنشاء المواضيع الفرعية بشكل صحيح على سرعة الموقع ضئيل للغاية. ملفات CSS وJS الإضافية عادةً ما تكون صغيرة الحجم، ويمكن دمجها وتخزينها بكفاءة عن طريق تنفيذ عمليات التحميل بشكل منظم. قد يكون العبء الرئيسي على أداء الموقع ناتجًا عن… functions.php تم إضافة منطق PHP المعقد إلى الكود. لذلك، من المهم الحفاظ على بساطة وكفاءة كود النواة (الـ sub-theme)، وذلك وفقًا لنفس المبادئ التي تم اتباعها أثناء تطوير النواة الرئيسية (الـ parent-theme). يمكن أن يساعد استخدام تقنيات التخزين المؤقت (الـ caching) بشكل مناسب في تقليل أي تأ
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل الوصول إلى الاحترافية في بناء المواقع باستخدام ووردبريس: من الصفر إلى الإتقان، لإنشاء مواقع إلكترونية مهنية
- دليل شامل لإنشاء موقع تجاري إلكتروني باستخدام WooCommerce: كيفية بناء موقع تجاري إلكتروني محترف من الصفر
- الدليل النهائي لتحسين أداء ووردبريس: 16 خطوة من المبتدئين إلى الخبراء
- لماذا اخترت استخدام منصة WooCommerce لبناء موقعك التجاري الإلكتروني؟
- لماذا يتم اختيار ووردبريس (WordPress) كمنصة أساسية لبناء المواقع الإلكترونية؟