¿Dónde está el lugar correcto para registrarse / poner en cola secuencias de comandos y estilos?

43

Estoy usando WordPress 3.1.4 por ahora. Estoy confundido con dónde (qué gancho) uso:

  • para registrarse y / o poner en cola
  • guiones y estilos
  • en el frente y el fondo?

Preguntas:

  • ¿Cuáles son los ganchos adecuados para usar?
  • ¿Todos los front end se registran / ponen en cola scripts / estilos en init?
  • ¿Por qué no hay admin_print_styles-{xxx}?
JM en el trabajo
fuente

Respuestas:

62

Por qué es importante registrarse y hacer cola correctamente

  • debe estar a tiempo : antes de que el script / estilo esté listo para ser enviado a la página, de lo contrario es demasiado tarde;

  • debe ser condicional ; de lo contrario, está cargando cosas donde no las necesita y causa problemas de rendimiento y funcionalidad, para esto necesita que se cargue el entorno WP en una etapa tardía.

Las tres etapas del proceso.

  1. registrarse : esto explica los detalles de WP sobre el script / estilo y hace que almacene esa información;

  2. enqueue - (a menudo agrupado junto con el registro en una wp_enqueue_*()llamada) - esto le dice a WP que agregue scripts / estilo a la cola, de acuerdo con su configuración (dependencias, carga de encabezado / pie de página).

  3. imprimir : esto sucede cuando WP procesa la cola, intenta cargar algo específico para sí mismo o cuando lo hace explícitamente con la wp_print_*()función.

Estructura frontal de funciones y ganchos.

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts " Esto es lo que necesitas

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

Va mucho más profundo, pero esto es simple y lo suficientemente bueno para puntos importantes:

  • wp_enqueue_scriptses el gancho más apropiado para registrar y poner en cola scripts y estilos en el front end y está allí específicamente para eso;

  • initno tiene nada que ver con esto, funcionará, pero - la recomendación anterior del Codex de usar solo era incorrecta ;

  • puede salirse con los scripts de cola (no los estilos) para el pie de página en cualquier momento antes de la wp_print_footer_scripts()llamada;

  • wp_print_*los ganchos NO son apropiados para el registro / la cola , son puntos en el código cuando la salida ya está ocurriendo. Son apropiados para la salida manual / personalizada de script / estilo.

¿Qué hay de administrador?

Bueno, la funcionalidad allí es aún más compleja, elaborada y anidada.

  • para empezar simplemente use admin_enqueue_scriptshook (se pasa $hook_suffixglobal para cosas condicionales ) para todo, funcionará bien en la mayoría de los casos;

  • cuando necesite algo complejo, mire a través admin-header.phpy busque desde allí los ganchos adecuados.

¿Qué pasa con el inicio de sesión?

Hay un gancho específico llamado login_enqueue_scripts.

Rarst
fuente
Hmm en otra respuesta a otra pregunta , me recomendaron admin_print_scripts-{xxx}. Encontré que admin_print_scriptsse llamaba pero no con -{xxx}eg. -edit.phppor ejemplo. ¿Qué tan correcta es esa respuesta de poner en cola admin_print_scripts-xxxy qué recomendará en su lugar? Supongamos que quiero incluir scripts / estilos en una página de agregar / editar tipo de publicación personalizada (para metabox)
JM en el trabajo
55
@JM at Work como se mencionó anteriormente, manténgase alejado de los *print*ganchos a menos que realmente sepa por qué los necesita. Y en general son para imprimir , no para hacer cola . admin_enqueue_scriptsganchos pasa $hook_suffixvariable que es la misma que se usa en esos ganchos dinámicos.
Rarst
$hook_suffixparece post.php en mi página de edición de cartera ¿por qué es eso? Pensé que también era edit.php, ¿cómo puedo determinar si estoy editando / publicando una cartera y no una publicación normal?
JM en el trabajo
@JM at Works honestamente, esa variable es algo desagradable :) En el propio complemento es más fácil manejarlo (retorno de la add_*_page()función), pero en las pantallas WP nativas puede ser algo diferente.
Rarst
Desafortunadamente, cuando cambio el enlace de wp_footer a wp_enqueue_scripts o admin_print_scripts, el CSS desaparece y no aparece en ninguna parte del código fuente. Este es el código que uso: add_action ('wp_enqueue_scripts', 'addCSS'); Eso NO funciona, esto funciona add_action ('wp_enqueue_scripts', 'addCSS'); excepto que obviamente agrega el CSS al pie de página. ¿Qué estoy haciendo mal?
Talon