Di mana tempat yang tepat untuk mendaftar / menggunakan skrip & gaya


43

Saya menggunakan WordPress 3.1.4 sekarang. Saya bingung dengan di mana (kait mana) yang saya gunakan:

  • untuk mendaftar dan / atau enqueue
  • skrip dan gaya
  • di depan dan belakang?

Pertanyaan:

  • Kait mana yang tepat untuk digunakan?
  • Semua skrip register / enqueue front end / gaya masuk init?
  • Kenapa tidak ada admin_print_styles-{xxx}?

Jawaban:


62

Mengapa mendaftar dan mengantri dengan benar penting

  • harus tepat waktu - lebih awal dari script / style untuk output ke halaman, jika tidak terlambat;

  • itu harus bersyarat - jika tidak Anda memuat barang-barang di mana Anda tidak membutuhkannya dan menyebabkan masalah kinerja dan fungsionalitas, untuk ini Anda perlu lingkungan WP dimuat ke tahap akhir.

Tiga tahap proses

  1. register - ini menjelaskan detail WP tentang skrip / gaya dan membuatnya menyimpan info itu;

  2. enqueue - (sering disatukan dengan register dalam satu wp_enqueue_*()panggilan) - ini memberitahu WP untuk menambahkan skrip / gaya ke antrian, sesuai dengan pengaturannya (dependensi, pemuatan header / footer).

  3. print - ini terjadi ketika WP memproses antrian, mencoba memuat sesuatu yang spesifik untuk dirinya sendiri atau ketika Anda secara eksplisit melakukannya dengan wp_print_*()fungsi.

Struktur fungsi dan kait ujung depan

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «Inilah yang Anda butuhkan

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

Ini jauh lebih dalam, tetapi ini sederhana dan cukup baik untuk poin-poin penting:

  • wp_enqueue_scriptsadalah pengait yang paling tepat untuk mendaftarkan dan mengantri skrip dan gaya di ujung depan dan ada khusus untuk itu;

  • inittidak ada hubungannya dengan ini, itu akan berhasil, tetapi - melewati rekomendasi Codex untuk menggunakan hanya itu tidak benar ;

  • Anda bisa lolos dengan skrip antrian (bukan gaya) untuk footer di titik mana saja sebelum wp_print_footer_scripts()menelepon;

  • wp_print_*kait TIDAK sesuai untuk register / antrian , mereka adalah poin dalam kode ketika output sudah terjadi. Mereka sesuai untuk output manual / skrip / gaya kustom.

Bagaimana dengan admin?

Nah, fungsi di sana bahkan lebih kompleks, rumit dan bersarang.

  • untuk pemula hanya menggunakan admin_enqueue_scriptshook (itu akan lulus $hook_suffixglobal untuk hal-hal bersyarat ) untuk semuanya, itu akan baik untuk sebagian besar kasus;

  • ketika Anda membutuhkan sesuatu yang kompleks - lihat admin-header.phpdan gali dari sana untuk kait yang tepat.

Bagaimana dengan login?

Ada kait khusus bernama login_enqueue_scripts.


Hmm di jawaban lain untuk pertanyaan lain , saya direkomendasikan admin_print_scripts-{xxx}. Saya menemukan yang admin_print_scriptsdipanggil tetapi tidak dengan -{xxx}misalnya. -edit.phpsebagai contoh. Betapa benarnya jawaban enqueuing in admin_print_scripts-xxxdan apa yang akan Anda rekomendasikan - misalkan saya ingin memasukkan skrip / gaya ke halaman add / edit tipe posting kustom (untuk metabox)
JM at Work

5
@ JM di Tempat Kerja seperti di atas pendapat pribadi saya - jauhi *print*kait kecuali Anda benar-benar tahu mengapa Anda membutuhkannya. Dan secara keseluruhan mereka untuk cetak , bukan antrian . admin_enqueue_scriptskait melewati $hook_suffixvariabel yang sama seperti yang digunakan dalam kait dinamis itu.
Paling lambat

$hook_suffixsepertinya post.php di halaman edit portofolio saya kenapa begitu? Saya pikir itu edit.php juga, bagaimana saya kemudian menentukan apakah saya mengedit / memposting portofolio & bukan posting yang normal?
JM at Work

@ JM di Works jujur ​​bahwa variabel itu agak jahat :) Dalam plugin sendiri lebih mudah untuk menghadapinya (kembalinya add_*_page()fungsi), tetapi di layar WP asli itu bisa menjadi hal yang berbeda.
Pertama

Sayangnya ketika saya mengubah hook dari wp_footer ke wp_enqueue_scripts atau admin_print_scripts CSS menghilang dan tidak muncul di mana pun dalam kode sumber. Ini adalah kode yang saya gunakan: add_action ('wp_enqueue_scripts', 'addCSS'); Itu TIDAK berfungsi, ini TIDAK berfungsi add_action ('wp_enqueue_scripts', 'addCSS'); kecuali untuk itu jelas menambahkan CSS ke footer. Apa yang saya lakukan salah?
Talon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.