Saya punya ini di functions.php
file saya dan saya tidak bisa mendapatkan jQuery untuk memuat di footer. The includes
berkas beban di denda footer, meskipun. Apa lagi yang harus saya lakukan?
function starter_scripts() {
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'jquery', '', '', '', true );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
defer
untuk menambahkan ke tag skrip Anda sebagai gantinya: matthewhorne.me/defer-async-wordpress-scriptsJawaban:
Untuk melakukan itu, Anda harus terlebih dahulu membatalkan pendaftaran skrip jQuery Anda dan kemudian mendaftar lagi. Jika Anda menggunakan jQuery datang dengan WordPress maka berikut ini adalah fungsi yang Anda cari.
Jika Anda menggunakan versi jQuery yang diinangi oleh Google CDN, beri tahu saya bahwa saya akan mengubah kode ini untuk URL CDN Google.
sumber
wp_enqueue_scripts
hanya digunakan di ujung depan sementaraadmin_enqueue_scripts
digunakan untuk ujung belakangBerikut adalah opsi lain yang menghindari keharusan untuk tidak mendaftar dan mendaftar ulang:
Solusi ini meniru inti WordPress dengan menyetel
group
ke1
, yang merupakan cara WordPress menentukan apakah skrip harus ada di footer atau tidak (Saya tidak mengetahui alasannya1
, seperti yang dicatat oleh @jgraup dalam komentar yang sepertinya agak sewenang-wenang).sumber
wp_register_script
digunakanadd_data( $handle, 'group', 1 )
untuk memindahkan skrip ke dalam footer. core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… - Bisakah Anda memperluas alasannya? Melirik kode Anda, 'grup' tampaknya agak sewenang-wenang. Tapi saya bisa melihat di core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… bagaimana menggunakannya di WP_Scripts->do_item
nanti. Bagaimanapun, ini tampaknya menjadi jawaban yang paling tidak merusak.Solusi yang lebih baik:
Mengapa lebih baik daripada jawaban yang diterima IMO
$footer = true
.Tentang tidak melakukan ini ke admin
Jika plugin menambahkan jquery inline ke wp_head, plugin akan gagal ketika jquery tidak dimuat pada saat itu, jadi saya sarankan Anda menghindari itu sampai Anda memiliki jutaan pengeditan situs Anda dan Anda mencoba mengoptimalkan kinerja admin Anda. Ini juga berlaku untuk frontend sehingga Anda harus berhati-hati terhadap tema atau plugin kode buruk yang menganggap jquery di kepala dengan menggunakan kode jQuery sebaris. WP dan plugin mendaftarkan skrip lain ke kepala admin dengan jquery di deps sehingga tidak akan berhasil saya pikir.
Tentang itu tidak berfungsi
Anda perlu menyadari bahwa jika ada skrip lain yang dimuat ke kepala yang memiliki jQuery di dependensinya, itu juga akan membuat jQuery memuat di kepala tepat sebelum itu sendiri. Dan ini bagus dan diharapkan, alasan sistem wp_enqueue ada. Ini berarti Anda akan segera belajar jika Anda menggunakan beberapa plugin yang salah satunya membutuhkan jquery di kepala. Sayangnya, ini adalah default untuk skrip enqueued.
Solusi Radikal
Saya pikir itu akan mengerem setiap JS inline yang mengasumsikan jquery tetapi seharusnya itu jarang terjadi. Ini akan memaksa semua skrip ke footer terlepas dari bagaimana enqueued mereka.
sumber
Saya telah mengembangkan sebuah plugin untuk masalah khusus ini. Plugin ini tidak mengacaukan dengan WordPress jQuery karena hanya dimuat di front-end. Lihat: Manajer jQuery untuk WordPress
Hampir semua orang menggunakan pegangan yang salah
WordPress sebenarnya menggunakan jquery-core, bukan jquery:
Cara yang benar untuk melakukannya
Dalam contoh saya di bawah ini saya menggunakan CDN jQuery resmi di https://code.jquery.com Saya juga menggunakan script_loader_tag sehingga saya dapat menambahkan beberapa atribut CDN.
Anda dapat menggunakan kode berikut:
sumber
sumber
Hai, ubah saja kode Anda menjadi seperti ini
saya pikir itu berfungsi dengan baik
tambahkan baris ini ke file functions.php Anda
lalu tambahkan skrip ke dalam footer
sumber
remove_action
/add_action
jika Anda akan melakukannya dengan cara ini.