Scriptleri ve stilleri kaydetmek / sıralamak için doğru yer neresidir


43

Şimdiye kadar WordPress 3.1.4 kullanıyorum. Nerede (hangi kancanın) kullandığımı karıştırıyorum:

  • kayıt olmak ve / veya zorlamak
  • komut dosyaları ve stiller
  • ön ve arka uçlarında?

Sorular:

  • Hangisini kullanmak için doğru kancalar?
  • Tüm ön uç yazım / yazım komutları / stilleri init?
  • Neden hiç yoktur admin_print_styles-{xxx}?

Yanıtlar:


62

Doğru bir şekilde kayıt ve sıraya koymak neden önemlidir

  • Olması gereken sürede - komut daha erken / stil aksi takdirde çok geç, sayfaya çıktı bulunmaya uygun olduğu;

  • şartlı olmalıdır - aksi takdirde ihtiyacınız olmayan şeyleri yüklüyorsunuz ve performans ve işlevsellik sorunlarına neden oluyorsunuz, çünkü bunun için geç aşamada WP ortamına ihtiyacınız var.

Sürecin üç aşaması

  1. register - script / style ile ilgili WP detaylarını açıklar ve bu bilgiyi saklar;

  2. enqueue - (genellikle bir wp_enqueue_*()aramada kayıtla birlikte toplanır ) - bu, WP'ye ayarlarına göre (bağımlılıklar, başlık / alt bilgi yükleme) kuyruğa komut dosyaları / stil eklemesini söyler.

  3. yazdır - bu, WP kuyruğu işlediğinde, kendine özel bir şey yüklemeye çalıştığında veya açıkça wp_print_*()işlevi ile yaptığında olur .

Fonksiyonların ve kancaların ön uç yapısı

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts " İhtiyacın olan şey bu

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

Çok daha derine iniyor, ancak bu önemli noktalar için yeterince basit ve yeterli:

  • wp_enqueue_scriptsön uçtaki komut dosyalarını ve stilleri kaydetmek ve sıraya koymak için en uygun kancadır ve özellikle bunun için vardır;

  • initbununla hiçbir ilgisi yok, işe yarayacak, ancak - önceki Codex tavsiyesini yalnızca yanlıştı ;

  • wp_print_footer_scripts()aramadan önce herhangi bir noktada altbilgi için kuyruk komut dosyaları (stiller değil) ile kurtulabilirsiniz ;

  • wp_print_*Kancalar kayıt / sıraya uygun DEĞİLDİR , çıktı zaten olduğunda kodda işaret ederler. Manuel / özel komut dosyası / stil çıktısı için uygundurlar.

Peki ya yönetici?

Peki, işlevselliği daha karmaşık, ayrıntılı ve iç içe geçmiş durumda.

  • Yeni başlayanlar için, sadece admin_enqueue_scriptskancayı kullanın ( $hook_suffixşartlı şeyler için global hale gelir ) her şey için, çoğu durumda güzel bir şekilde yapacaktır;

  • Karmaşık bir şeye ihtiyacınız olduğunda - admin-header.phpuygun kancalar için oradan bakın ve kazın.

Peki ya giriş?

Adında belirli bir kanca var login_enqueue_scripts.


Hmm başka bir soruya başka bir cevap , tavsiye edildi admin_print_scripts-{xxx}. Bunun admin_print_scriptsadı olduğunu öğrendim, ancak -{xxx}örneğin. -edit.phpÖrneğin. Bu nequequeing cevabı admin_print_scripts-xxxve bunun yerine ne tavsiye edersiniz - Diyelim ki özel bir yazı tipi ekleme / düzenleme sayfasına (metabox için) komut dosyaları / stilleri eklemek istediğimi (metabox için)
JM,

5
@JM at Work kişisel görüşümün yukarısındaki gibi - *print*neden onlara ihtiyaç duymadığınızı gerçekten bilmiyorsanız kancalardan uzak durun . Ve genel olarak baskı için , sıra değil . admin_enqueue_scriptsKancalar $hook_suffix, bu dinamik kancalarda kullanılanla aynı olan değişkeni geçer .
Rarst

$hook_suffixbenim portföy düzenleme sayfamda post.php'ye benziyor neden? Ayrıca edit.php olduğunu düşündüm, sonra normal bir yazıyı değil bir portföyü düzenleyip / yazıp yazamayacağımı nasıl belirleyebilirim?
JM, Work at

Dürüst olmak gerekirse WorksJ @JM değişken biraz kötü :) Kendi eklenti ile başa çıkmak daha kolay ( add_*_page()fonksiyonun geri dönüşü ), ancak yerel WP ekranlarında farklı şeyler olabilir.
Rarst,

Ne yazık ki kancayı wp_footer'dan wp_enqueue_scripts veya admin_print_scripts olarak değiştirdiğimde CSS kayboluyor ve kaynak kodunda hiçbir yerde görünmüyor. Kullandığım kod: add_action ('wp_enqueue_scripts', 'addCSS'); Bu işe yaramaz, bu işe yaramaz add_action ('wp_enqueue_scripts', 'addCSS'); bunun dışında açıkça altbilgiye CSS ekler. Neyi yanlış yapıyorum?
Talon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.