it-swarm.asia

تقييد المكون الإضافي فقط لتحميل CSS و JS على الصفحات المحددة؟

أود أن تسبب البرنامج المساعد في تقييد تحميل صفحات أنماط CSS وملفات JavaScript JS على تلك الصفحات التي تحتاجها فقط.

مثال على سؤالي هو المكون الإضافي نموذج الاتصال 7 الذي استخدمته لإنشاء نموذج في صفحة واحدة على موقعي (صفحة " اتصل بي "). ومع ذلك ، تضيف الأسطر التالية إلى كل صفحة/مشاركة على الموقع الإلكتروني:

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

هذا يجعلني أشك في أن هذا المكون الإضافي يضعف من وقت تحميل موقعي ، لإضافة تهمني على صفحة واحدة فقط على الموقع.

وبالتالي ، سؤالي هو كيف يمكنني إزالة هذه الخطوط الإضافية من جميع الصفحات باستثناء صفحة "اتصل بي" ولكن دون إلغاء تنشيط المكون الإضافي؟

9
Tal Galili

يتم دائمًا إعداد الأنماط والبرامج النصية بواسطة الدالتين wp_enqueue_script() و wp_enqueue_style() ، والتي يجب أن ترتبط بربط عمل معين حتى تعمل. أخذت نظرة خاطفة داخل نموذج الاتصال 7 ، ويبدو أنه يستخدم علامات الإجراء الخاصة بـ wpcf7_enqueue_scripts و wpcf7_enqueue_styles لإضافتها إلى الخطافات wp_print_scripts و wp_print_styles.

لذا ، ما عليك القيام به هو إلغاء ربط البرامج النصية والأنماط من كل صفحة ولكن صفحة الاتصال الخاصة بك. يتم تشغيل الإجراء wp_head قبل إجراءات البرنامج النصي والأنماط ، لذلك ستحتاج إلى إضافة شيء مثل هذا إلى ملف وظائف.

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

is_page () ظيفة ستُرجع true عندما تكون في صفحة الاتصال (على افتراض أن الاسم "contact me") ... يمكنك أيضًا استخدام slug الصفحة ومعرف الصفحة للمرشح. في جميع الصفحات الأخرى ، ستضيف if() الشرطية وظيفة إزالة البرنامج النصي/النمط إلى الإجراء wp_head ، والذي يتم تشغيله قبل إجراءات wp_print_scripts و wp_print_styles مباشرة.

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

9
EAMann