Saya memuat beberapa file JavaScript dalam tema induk. Jalur dalam tema induk adalah:
scripts > custom.js
Dalam tema anak, saya membuat jalur yang sama ( scripts > custom.js
) dan mengubah beberapa jQuery di dalam custom.js
file.
Masalahnya adalah bahwa perubahan tidak diterapkan. Apakah ini cara yang salah untuk membuat perubahan pada file-file ini dalam tema anak?
child-theme
wp-enqueue-script
Chris Molitor
sumber
sumber
Jawaban:
Tema anak hanya menimpa file php (seperti header.php) yang disertakan dengan fungsi seperti get_template_part atau get_header, dll.
Cara yang benar untuk menambahkan skrip ke WordPress adalah dengan wp_enqueue_script . Jika tema orang tua Anda menggunakan ini, Anda dapat mengganti file JS dengan menggunakan wp_dequeue_script dan membuat sendiri milik Anda.
Seperti ...
Jika tema induk tidak menggunakan wp_enqueue_script, itu mungkin menghubungkan ke wp_head (atau wp_footer) untuk mengulangi skrip di sana. Jadi, Anda akan menggunakan remove_action untuk menyingkirkan fungsi-fungsi yang menyuarakan skrip, dan kemudian enqueue skrip Anda sendiri.
Jika skrip dikodekan ke dalam file templat, Anda hanya perlu mengganti file templat itu di tema anak Anda tanpa tag skrip.
Jika mereka menggunakan panggilan wp_enqueue_script yang memanfaatkan get_stylesheet_directory_uri , maka Anda tidak perlu melakukan apa-apa. Karena ini tidak terjadi, Anda hanya perlu melihat-lihat dan melihat apa yang dilakukan oleh pembuat tema.
sumber
wp_enqueue_scripts
hanya dapat digunakan untuk skrip enqueue di ujung depan. Diperbarui. Jika Anda melihat sesuatu yang kedaluwarsa, silakan edit.add_action( 'wp_enqueue_scripts', 'wpse26822_script_fix', 100 );
dari codex.wordpress.org/Function_Reference/wp_dequeue_scriptwp_deregister_script('parent-script-handle');
untuk menghapus skrip induk sepenuhnya. Memang, itu tidak berhasil bagi saya tanpa itu. WP 4.6.1Dalam beberapa kasus, penting untuk memprioritaskan fungsi add_action dan wp_enqueue_script seperti:
Dalam hal ini, wp_enqueue_scripts dipanggil oleh induk dengan prioritas 20120206 (tanggal) dan karenanya tindakan ini ditambahkan dengan prioritas hanya sedikit lebih besar sehingga akan segera keluar. Kemudian, pernyataan enqueue yang mengikuti berikut ini sebenarnya diprioritaskan setelah itu untuk memastikan bahwa itu memuat setelah yang lama dequeued. Yang benar, dalam hal ini juga penting karena yang menentukan bahwa itu harus di enqueued di footer, yang merupakan tempat naskah induk pertama kali enqueued.
Juga, saya tidak bisa menjelaskannya sepenuhnya, tetapi saya perhatikan bahwa jika Anda berhati-hati dengan mengeluarkan skrip awal segera setelah enqueued, tampaknya Anda dapat secara efektif mencegahnya memuat di tempat pertama.
sumber
wp_enqueue_script
tidak memiliki parameter prioritas, itu hanya nomor versi yang digabungkan ke ujung jalan sebagai string kueri. Parameter ini digunakan untuk memastikan bahwa versi yang benar dikirim ke klien terlepas dari caching [...]panggil wp_deregister_script sebelum mendaftarkan versi Anda sendiri
sumber
sumber