إضافة سكربت في functions.php باستخدام is_page لا تعمل
في عالم تطوير الويب، يواجه الكثير من المبرمجين والمصممين تحديات تتعلق بإضافة الأكواد المخصصة إلى صفحات ووردبريس. إحدى هذه التحديات هي عملية إدراج السكربتات من خلال ملف functions.php
، خصوصاً عند استخدام دالة is_page
. سنناقش في هذا المقال أساليب عملية للوصول إلى حل لهذه المشكلة، وكيف يمكن تجاوزها باستخدام تقنيات مختلفة.
ما هي المشكلة في استخدام is_page؟
يعتبر استخدام دالة is_page
وسيلة شائعة لمعرفة ما إذا كانت الصفحة المعنية هي صفحة معينة في ووردبريس. ومع ذلك، قد يواجه المبرمجون مشاكل عندما يتعلق الأمر بإضافة السكربتات إلى محرر الكتل (Block Editor) في ووردبريس. السبب في ذلك هو أن دالة is_page
متاحة فقط في الواجهة الأمامية (الفرونت إند) وليست في الواجهة الخلفية (الباك إند). لذا، فإنّ استخدام هذه الدالة بشكل مباشر في functions.php
قد لا يحقق النتيجة المرجوة.
حلول للمشكلة
لحل مشكلة Enqueing a script in functions.php using is_page not working، هناك بعض الحلول التي يمكن تطبيقها.
استخدام دالة get_current_screen
بدلاً من استخدام is_page
، يمكن استخدام دالة get_current_screen
لفحص ما إذا كنت في صفحة محددة ضمن محرر الكتل. على سبيل المثال، يمكنك استخدام الكود التالي:
function alerts_enqueue() {
$current_screen = get_current_screen();
if ('post' === $current_screen->base && get_the_ID() === xxx ) {
wp_enqueue_script('alerts-script', get_stylesheet_directory_uri() . '/js/alerts.js', array(), null, true);
}
}
add_action('enqueue_block_editor_assets', 'alerts_enqueue');
هذا النموذج يسمح لك بالتأكد من أنك في محرر الكتل ومن ثم يتم تحميل السكربت في الصفحة الصحيحة. يُعتبر استخدام get_the_ID()
طريقة فعالة للتحقق من هوية الصفحة الحالية.
استهداف الصفحات باستخدام slug
إذا كنت ترغب في استهداف صفحات معينة بواسطة slug
الخاص بها، يمكنك استخدام الكود التالي:
function alerts_enqueue() {
$current_screen = get_current_screen();
if ('post' === $current_screen->base && get_post_field('post_name', get_the_ID()) === 'foo-bar-slug') {
wp_enqueue_script('alert-script', get_stylesheet_directory_uri() . '/js/alerts.js', array(), null, true);
}
}
add_action('enqueue_block_editor_assets', 'alerts_enqueue');
باستخدام هذه الطريقة، يمكنك استهداف الصفحات بناءً على slug
الخاص بها، مما يعطيك مرونة أكبر في إدارة السكربتات المخصصة.
إضافة عدة Slugs في دالة واحدة
إذا كنت بحاجة إلى هل هناك صفحات متعددة لدمجها في دالة واحدة، يمكن القيام بذلك من خلال تعديل الدالة كما يلي:
function alerts_enqueue() {
$current_screen = get_current_screen();
$target_slugs = ['foo-bar-slug', 'another-slug', 'yet-another-slug']; // مصفوفة من slugs التي تريد استهدافها
if ('post' === $current_screen->base && in_array(get_post_field('post_name', get_the_ID()), $target_slugs)) {
wp_enqueue_script('alert-script', get_stylesheet_directory_uri() . '/js/alerts.js', array(), null, true);
}
}
add_action('enqueue_block_editor_assets', 'alerts_enqueue');
بهذه الطريقة، تستطيع استهداف مجموعة من الصفحات بدلاً من صفحة واحدة فقط، مما يسهل إدارة السكربتات المختلفة.
ختاماً
في الختام، يمكن القول أن إشكالية Enqueing a script in functions.php using is_page not working يمكن التغلب عليها باستخدام بدائل فعالة مثل get_current_screen
. من خلال تقنيات بسيطة، يمكن تحقيق نتائج مرضية تضيف القيمة للمشاريع المختلفة في ووردبريس. إذا كنت تواجه تحديات مشابهة، قد تجد أن الأساليب الواهبة للحلول المذكورة أعلاه ستكون مفيدة.
عليك دائماً مراعاة التحقق من هوية الصفحة الحالية بدقة قبل إضافة أي سكربت، لضمان عدم حدوث أخطاء.