it-swarm-id.com

Membatasi Plugin untuk Hanya Memuat CSS dan JS-nya pada Halaman yang Dipilih?

Saya ingin membuat plugin membatasi pemuatan CSS stylesheet dan file JavaScript JS hanya pada halaman-halaman yang dibutuhkan.

Contoh untuk pertanyaan saya adalah plugin Formulir Kontak 7 yang saya gunakan untuk membuat formulir dalam satu halaman di situs saya (halaman " contact me "). Namun itu menambahkan baris berikut ke SETIAP halaman/posting di situs web:

<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> 

Ini membuat saya curiga bahwa plugin ini mengganggu waktu pemuatan situs saya, untuk ekstensi yang menarik minat saya hanya pada satu halaman di situs.

Jadi, pertanyaan saya adalah bagaimana saya bisa menghapus garis tambahan ini dari semua halaman kecuali untuk halaman "Hubungi Saya" tetapi tanpa menonaktifkan plugin?

9
Tal Galili

Gaya dan skrip selalu diatur oleh fungsi wp_enqueue_script() dan wp_enqueue_style(), yang harus dikaitkan dengan kait tindakan tertentu agar berfungsi. Saya mengintip ke dalam Formulir Kontak 7, dan sepertinya menggunakan tag tindakan wpcf7_enqueue_scripts dan wpcf7_enqueue_styles untuk menambahkannya ke kait wp_print_scripts dan wp_print_styles.

Jadi, apa yang perlu Anda lakukan adalah melepas kaitan skrip dan gaya dari setiap halaman tetapi halaman kontak Anda. Tindakan wp_head diaktifkan sebelum skrip dan tindakan gaya, jadi Anda harus menambahkan sesuatu seperti ini ke file functions.php tema Anda:

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');
}

Fungsi is_page () akan mengembalikan true ketika Anda berada di halaman kontak (dengan asumsi namanya adalah "hubungi saya") ... Anda juga dapat menggunakan halaman slug dan ID halaman untuk filter. Pada semua halaman lain, kondisional if() akan menambahkan fungsi penghapusan skrip/gaya ke aksi wp_head, yang diaktifkan tepat sebelum aksi wp_print_scripts dan wp_print_styles.

Ini akan menghapus kode tambahan dari halaman Anda, dan Anda tidak perlu menonaktifkan plug-in atau mengedit file inti apa pun. Fungsi dan kode yang saya sebutkan di atas juga tidak akan menyebabkan tema Anda rusak jika Anda menghapus Contact Form 7 di masa depan, jadi ... tidak perlu khawatir tentang kompatibilitas pemutakhiran di masa mendatang.

9
EAMann