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}?
JM di Tempat Kerja
sumber

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.

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