Où est le bon endroit pour enregistrer / mettre en file d'attente les scripts et les styles

43

J'utilise WordPress 3.1.4 maintenant. Je suis confondu avec où (quel crochet) dois-je utiliser:

  • enregistrer et / ou mettre en file d'attente
  • scripts et styles
  • sur le devant et l'arrière?

Des questions:

  • Quels sont les bons crochets à utiliser?
  • Tous les scripts / styles de registre / mise en file d'attente frontale dans init?
  • Pourquoi n'y a t-il pas admin_print_styles-{xxx}?
JM au travail
la source

Réponses:

62

Pourquoi l'inscription et la mise en file d'attente sont importantes

  • cela devrait être dans le temps - avant que le script / style ne soit disponible pour la sortie sur la page, sinon c'est trop tard;

  • il devrait être conditionnel - sinon, vous chargez des choses là où vous n'en avez pas besoin et vous causez des problèmes de performances et de fonctionnalité. Pour cela, vous avez besoin d'un environnement WP chargé à un stade avancé.

Les trois étapes du processus

  1. register - cela explique les détails de WP sur le script / style et lui permet de stocker ces informations;

  2. enqueue - (souvent regroupé avec enregistrer dans un wp_enqueue_*()appel) - cela indique à WP d'ajouter des scripts / style à la file d'attente, en fonction de ses paramètres (dépendances, chargement de l'en-tête / du pied de page).

  3. print - cela se produit lorsque WP traite la file d'attente, essaie de charger quelque chose de spécifique pour lui - même ou lorsque vous le faites explicitement avec wp_print_*()function.

Structure frontale des fonctions et des crochets

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «C'est ce dont tu as besoin

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (dix) wp_print_footer_scripts()

Cela va beaucoup plus loin, mais c'est simple et suffisant pour des points importants:

  • wp_enqueue_scriptsest le hook le plus approprié pour l’inscription et la mise en file d’attente de scripts et de styles sur le front-end, et il existe spécifiquement pour cela;

  • initcela n’a rien à voir avec cela, cela fonctionnera, mais - l’ ancienne recommandation du Codex de n’utiliser que ce n’était pas correct ;

  • vous pouvez vous en tirer avec des scripts en file d'attente (pas de styles) pour le pied de page à tout moment avant l' wp_print_footer_scripts()appel;

  • wp_print_*les hooks ne sont PAS appropriés pour register / queue , ce sont des points dans le code lorsque la sortie est déjà en cours. Ils conviennent à la sortie manuelle / personnalisée de script / style.

Qu'en est-il admin?

Eh bien, la fonctionnalité est encore plus complexe, complexe et imbriquée.

  • pour commencer, utilisez simplement admin_enqueue_scriptshook (il est passé $hook_suffixglobal pour les choses conditionnelles ) pour tout, ça ira très bien dans la plupart des cas;

  • Lorsque vous avez besoin de quelque chose de complexe - regardez à travers admin-header.phpet creusez à partir de là pour les crochets appropriés.

Qu'en est-il de la connexion?

Il y a un crochet spécifique nommé login_enqueue_scripts.

Rarst
la source
Hmm dans une autre réponse à une autre question , j'ai été recommandé admin_print_scripts-{xxx}. J'ai trouvé que admin_print_scriptsc'était appelé mais pas avec, -{xxx}par exemple. -edit.phppar exemple. Quelle est la réponse correcte à cette mise en file d'attente admin_print_scripts-xxxet que recommanderiez-vous à la place - supposons que je veuille inclure des scripts / styles dans une page d'ajout / de modification de type message personnalisé (pour metabox)
JM at Work le
5
@JM au travail comme ci-dessus, mon opinion personnelle - éloignez-vous des *print*crochets, à moins que vous ne sachiez vraiment pourquoi vous en avez besoin. Et globalement, ils sont à imprimer , pas à faire la queue . admin_enqueue_scriptshooks transmet une $hook_suffixvariable identique à celle utilisée dans ces hooks dynamiques.
Rarst
$hook_suffixressemble à post.php dans ma page de modification du portefeuille, pourquoi? Je pensais que c’était aussi edit.php. Comment puis-je déterminer si je suis en train d’éditer / publier un portefeuille et non un article normal?
JM au travail
@JM à Works honnêtement, cette variable est quelque peu méchante :) Dans son propre plug-in, il est plus facile de la gérer (retour de la add_*_page()fonction), mais dans les écrans WP natifs, il peut s'agir de choses différentes.
Rarst
Malheureusement, lorsque je change de hook de wp_footer à wp_enqueue_scripts ou admin_print_scripts, le CSS disparaît et ne s'affiche nulle part dans le code source. C'est le code que j'utilise: add_action ('wp_enqueue_scripts', 'addCSS'); Cela NE FONCTIONNE PAS, ceci ne fonctionne PAS add_action ('wp_enqueue_scripts', 'addCSS'); sauf que cela ajoute évidemment le CSS au pied de page. Qu'est-ce que je fais mal?
Talon