Dov'è il posto giusto per registrare / accodare script e stili


43

Sto usando WordPress 3.1.4 ormai. Sono confuso con dove (quale hook) devo usare:

  • per registrarsi e / o accodare
  • script e stili
  • su front-end e back-end?

Domande:

  • Quali sono i ganci giusti da usare?
  • Tutti gli script / stili di front end register / enqueue in init?
  • Perché non c'è admin_print_styles-{xxx}?

Risposte:


62

Perché la registrazione e l'accodamento sono importanti

  • dovrebbe essere in tempo - prima che script / style sia pronto per essere stampato sulla pagina, altrimenti è troppo tardi;

  • dovrebbe essere condizionale - altrimenti stai caricando cose dove non ti servono e causando problemi di prestazioni e funzionalità, per questo è necessario caricare l'ambiente WP in fase avanzata.

Le tre fasi del processo

  1. registro - questo spiega i dettagli di WP su script / stile e lo fa memorizzare quelle informazioni;

  2. accodamento - (spesso raggruppato insieme al registro in una wp_enqueue_*()chiamata) - questo dice a WP di aggiungere script / stile alla coda, in base alle sue impostazioni (dipendenze, caricamento di intestazione / piè di pagina).

  3. stampa - questo accade quando WP elabora la coda, cerca di caricare qualcosa di specifico per se stesso o quando lo fai esplicitamente con la wp_print_*()funzione.

Struttura front-end di funzioni e ganci

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts " questo è quello di cui hai bisogno

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

Va molto più in profondità, ma questo è semplice e abbastanza buono per punti importanti:

  • wp_enqueue_scriptsè il gancio più appropriato per la registrazione e l'accodamento di script e stili sul front-end ed è lì appositamente per quello;

  • initnon ha nulla a che fare con questo, funzionerà, ma - la raccomandazione del Codex precedente di usare solo era errata ;

  • puoi scappare con gli script di accodamento (non stili) per il piè di pagina in qualsiasi momento prima di wp_print_footer_scripts()chiamare;

  • wp_print_*gli hook NON sono appropriati per il registro / coda , sono punti nel codice quando l'output sta già avvenendo. Sono appropriati per l'output manuale / personalizzato di script / stile.

Che dire di admin?

Bene, la funzionalità è ancora più complessa, elaborata e nidificata.

  • per i principianti basta usare admin_enqueue_scriptshook (viene passato a $hook_suffixlivello globale per cose condizionali ) per tutto, andrà bene per la maggior parte dei casi;

  • quando hai bisogno di qualcosa di complesso - guarda attraverso admin-header.phpe scava da lì per i ganci appropriati.

Che dire del login?

C'è un hook specifico chiamato login_enqueue_scripts.


Hmm in un'altra risposta a un'altra domanda , mi è stato consigliato admin_print_scripts-{xxx}. Ho scoperto che admin_print_scriptssi chiamava ma non con -{xxx}es. -edit.phpper esempio. Quanto è giusta quella risposta di accodamento admin_print_scripts-xxxe cosa mi consiglierai invece - supponiamo che io voglia includere script / stili in una pagina di aggiunta / modifica di tipo di post personalizzato (per metabox)
JM at Work,

5
@JM at Work come sopra la mia opinione personale - *print*stai lontano dagli ami se non sai davvero perché ne hai bisogno. E nel complesso sono per la stampa , non per la coda . admin_enqueue_scriptshooks passa una $hook_suffixvariabile identica a quella usata in questi hook dinamici.
Rarst

$hook_suffixsembra post.php nella mia pagina di portfolio di modifica perché? Ho pensato che fosse anche edit.php, come faccio a determinare se sto modificando / pubblicando un portfolio e non un post normale?
JM at Work

@JM at Works onestamente quella variabile è un po 'brutta :) Nel proprio plugin è più facile gestirla (ritorno della add_*_page()funzione), ma nelle schermate WP native può essere qualcosa di diverso.
Rarst

Sfortunatamente quando cambio l'hook da wp_footer a wp_enqueue_scripts o admin_print_scripts il CSS scompare e non compare da nessuna parte nel codice sorgente. Questo è il codice che uso: add_action ('wp_enqueue_scripts', 'addCSS'); Che NON FUNZIONA, questo FUNZIONA add_action ('wp_enqueue_scripts', 'addCSS'); eccetto che ovviamente aggiunge il CSS al piè di pagina. Che cosa sto facendo di sbagliato?
Talon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.