مدخل المبرمجين Loading...

مدخل المبرمجين

النشرة البريدية

أضف بريدك ليصلك كل جديد

الأقسام

what-is-child-theme

ماهو القالب الإبن ولماذا وكيف يجب عليك استخدامه؟

5 تعليقات

يقول elbishari:

السلام عليكم اخي الكريم اريد مساعدتك ,,,

اسم القالب هو herald , ويوجد داخل القالب اكثر من ملف css على سبيل المثال قمت بتعديل في بعض الملفات ومنها
,’font-awesome.css’,’herald-bbpress.css’,’herald-woocommerce.css’,’magnific-popup.css’,’main.css’,’min.css’,
السؤال هنا والذي سألت عليه الكثير ولم اجد له جواب شافي
كيف يتم اضافة هذه الملفات المعدلة للدالة my_theme_enqueue_styles
ممكن تكتبلي الكود في وجود هذه الملفات المعدلة

يقول prosentra:

أولا يمكنك تخطي كل هذه المشكلة بإضافة التعديلات فقط لملف الاستايل الخاص بالقالب الإبن مادمن لم تعدل على العديد من الاستايلات، ولكن إذا كنت مصر للحفاظ على الملف نفسه بالكامل بالتعديلات عليك اتباع الآتي:

– هل هذه الملفات تابعة للقالب الأب؟

– إن كان كذلك فيجب نسخها داخل القالب الإبن بنفس مسار المجلدات..(هل هذه النقطة واضحة)

– بالطبع القالب قام بتسجيل هذه الملفات عن طريق دالة أيضاً باستخدام الأكشن

– عليك في هذه الحالة إلغاء الأكشن الذي يقوم باستدعاء هذه الملفات، عن طريق إضافة كود الإلغاء إلى ملف functions.php الخاص بالقالب الإبن (أؤكد لك القالب الإبن)

– يتم إلغاء الأكشن عن طريق جلب إسم الدالة التي يستخدمها القالب الأب وليكن اسم الدالة herald_scripts ، ثم حذفه من الأكشن wp_enqueue_scripts هكذا

remove_action(‘wp_enqueue_scripts’,’herald_scripts’);

– يمكنك معرفة مكان هذه الدالة في القالب عن طريق جلب إسم ملف استايل معين وليكن font-awesome.css ثم استخدام ++notepad وعمل بحث، وتحديد خيار البحث داخل مجلد، ثم اختيار مجلد القالب فسيقوم بجل مسارات الملفات التي تحتوي عليه يمكنك تصفيتها للوصول الملف المطلوب.

– ثم تقوم بتسجيل الدالة الخاصة بك داخل الأكشن ذاته هكذا

add_action(‘wp_enqueue_scripts’,’my_theme_enqueue_styles’);

– ثم قم بنسخ كامل الكود الذي كان بداخل الدالة herald_scripts إلى my_theme_enqueue_styles

– قم بتعديل مسارات الملفات بحيث تشير إلى القالب الإبن، بمعنى أنه ربما يستخدم دالة get_template_directory_uri لأنه يجلب الملفات من القالب الأب، لذا عليك استبدال الدالة بـ get_stylesheet_directory_uri

مثال:

تخيل أن القالب الأب به ملف ستايل بالمسار التالي

/js/owl-carousel/owl.carousel.css

وتم تسجيله بالشكل التالي داخل أحد ملفات القالب الأب

function parent_styles()
{
wp_enqueue_style( ‘owl-carousel’, get_template_directory_uri() .’/js/owl-carousel/owl.carousel.css’, array(), ”, ‘all’ );
}
add_action( ‘wp_enqueue_scripts’, ‘parent_styles’ );

عليك الآن نسخ نفس الدالة داخل ملف الفانكشن الخاص بالإبن مع تغيير اسم الدالة وليكن child-styles واستبدال get_template_directory_uri بـ get_stylesheet_directory_uri

function child_styles()
{
wp_enqueue_style( ‘owl-carousel’, get_stylesheet_directory_uri() .’/js/owl-carousel/owl.carousel.css’, array(), ”, ‘all’ );
}
add_action( ‘wp_enqueue_scripts’, ‘child_styles’ );

ثم إلغاء الدالة parent_style هكذا

remove_action( ‘wp_enqueue_scripts’, ‘parent_styles’ );

 

مع مراعاة أنك لابد أن تنتبه لباقي الملفات التي لم تقم بالتعديل عليه وفي نفس الوق هي تابعة للدالة التي ألغيتها، ففي هذه الحالة يجب نقل جميع الملفات التابعة للدالة داخل الملف الإبن بنفس المسار، حتى لاتظهر لك مشاكل بالتصميم

يقول elbishari:

اخي الكريم شكرا جزيلا لمجهودك ,,

ولكن انا ياخي ليست لديا الخبرة الكافية بلغة css ولا اعرف ماهى الدالة التي يستخدمها قالبي , وملف style.css الموجود في قالبي لا يحتوي الا على اسم القالب وبعض بيانات التعريف , اخي الكريم لقد قمت ببدل جهد كبير في تعريب القالب وتغيير اتجاهه ,ولكن مايتوقف عليه موقعي هو الشيلد ثيم لحفظ هذه التغييرات

اخي لو مفش احراج اود ان ارسل اليك قالبي عبر البريد الالكتروني او اي وسيلة اخرى تناسبك لتتطلع عليه وسوف اشرح لك بالتفصيل التغييرات التي قمت بها على الملفات بحيث لا أخد من وقتك الكثير وتتمكن من انشاء ملف شيلد ثيم بكل سهولة , لأن بصدق هذا الموضوع حيرني كثيرا ولم استطيع ان ابدأ في موقعي بسبب هذا الأمر

يقول prosentra:

قم برفع ملفاتك مضغوطة على ميديا فاير سواء كانت قالب إبن أو أب وسأقوم بالإطلاع عليها.. لكن هذا ليس حلاً ويجب عليك الفهم، أرسله لي عن طريق رسائل صفحة programmers Entrance

يقول elbishari:

اخي لقد قمت برفع القالب على ميديا فاير وارسلته اليك عبر صفحتكم على الفيس بوك

اترك تعليقاً

الموضوعات ذات الصلة

Share by email

Please write down client's email address