كيف يمكنني استخدام هو_صفحة () داخل البرنامج المساعد?

StackOverflow https://stackoverflow.com//questions/22070223

  •  23-12-2019
  •  | 
  •  

سؤال

أريد أن يقوم المكون الإضافي الخاص بي بتسجيل برنامج نصي فقط في صفحة معينة.

على سبيل المثال ، داخل ملف البرنامج المساعد الخاص بي أريد أن أكتب شيئا من هذا القبيل:

if (is_page()) {
    $pageid_current = get_the_ID();
    $page_slug = get_post($pageid_current)->post_name;

    if ($page_slug == 'articles'){
        wp_register_script('myscript', '/someurl/main.js');
    }
}

ولكن أحصل على الخطأ:

تم استدعاء الصفحة بشكل غير صحيح.علامات الاستعلام الشرطي لا تعمل قبل تشغيل الاستعلام.قبل ذلك ، يعودون دائما كاذبة.من فضلك انظر التصحيح في وورد لمزيد من المعلومات.(كانت هذه الرسالة وأضاف في الإصدار 3.1.)

كيف يمكنني, داخل البرنامج المساعد, تسجيل برنامج نصي في صفحة معينة?

هل كانت مفيدة؟

المحلول

is_page() العمل فقط داخل ملفات القالب.

واستخدامه ضمن ملفات البرنامج المساعد ، تحتاج إلى استخدامه مع مزيج من template_redirect هوك العمل.

هذا هوك العمل ينفذ قبل وورد يحدد أي صفحة قالب لتحميل.

لذا فإن المقتطف التالي سيعمل:

add_action( 'template_redirect', 'plugin_is_page' );

function plugin_is_page() {
    if ( is_page( 'articles' ) ) {
        wp_register_script( 'my-js-handler', '/someurl/main.js', [], '1.0.0', true );
    }
}

نصائح أخرى

يمكنك استخدام is_page() بعد إعادة توجيه القالب لذلك تحتاج إلى إضافة في هوك مثل هذا :

add_action('template_redirect','your_function');
function your_function(){
 if ( is_page('test') ) {
  // do you thing.
 }
}

يجب عليك تسجيل البرنامج النصي كما لو كنت تريد أن تعمل في كل مكان. يمكنك إزالة تسجيله بعد انتهاء المهمة، مثل هذا:

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top