Ya he agregado mis scripts, pero quería saber la forma preferida.
Acabo de poner una <script>
etiqueta directamente en header.php
mi plantilla.
¿Existe un método preferido para insertar archivos js externos o personalizados?
¿Cómo vincularía un archivo js a una sola página? (Tengo la página de inicio en mente)
theme-development
javascript
naugtur
fuente
fuente
Respuestas:
Úselo
wp_enqueue_script()
en su temaLa respuesta básica es usar
wp_enqueue_script()
en unwp_enqueue_scripts
gancho para front-endadmin_enqueue_scripts
para el administrador. Puede verse más o menos así (lo que supone que está llamando desde elfunctions.php
archivo de su tema ; observe cómo hago referencia al directorio de la hoja de estilo):Eso es lo básico.
Scripts predefinidos y dependientes múltiples
Pero supongamos que desea incluir jQuery y jQuery UI Sortable de la lista de scripts predeterminados incluidos con WordPress y desea que su script dependa de ellos. Fácil, solo incluya los dos primeros scripts utilizando los identificadores predefinidos definidos en WordPress y para su script proporcione un tercer parámetro para el
wp_enqueue_script()
cual es una matriz de los identificadores de script utilizados por cada script, de esta manera:Scripts en un complemento
¿Qué pasa si quieres hacerlo en un complemento en su lugar? Use la
plugins_url()
función para especificar la URL de su archivo Javascript:Versiones de sus scripts
También tenga en cuenta que anteriormente le dimos a nuestro complemento un número de versión y lo pasamos como un 4to parámetro a
wp_enqueue_script()
. El número de versión se emite en la fuente como argumento de consulta en la URL a la secuencia de comandos y sirve para obligar al navegador a volver a descargar el archivo posiblemente almacenado en caché si la versión cambia.Cargue scripts solo en páginas donde sea necesario
La primera regla de rendimiento web dice minimizar las solicitudes HTTP, por lo que siempre que sea posible, debe limitar las secuencias de comandos para que se carguen solo donde sea necesario. Por ejemplo, si solo necesita su secuencia de comandos en el administrador, limítelo a las páginas de administración que usan el
admin_enqueue_scripts
gancho en su lugar:Cargue sus scripts en el pie de página
Si sus scripts son uno de los que deben cargarse en el pie de página, hay un quinto parámetro
wp_enqueue_script()
que le dice a WordPress que lo retrase y lo coloque en el pie de página (suponiendo que su tema no se haya comportado mal y que realmente llame al gancho wp_footer como todos buenos temas de WordPress deberían ):Control de grano más fino
Si necesita un control más detallado que eso, Ozh tiene un excelente artículo titulado Cómo: cargar Javascript con su complemento de WordPress que detalla más.
Deshabilitar secuencias de comandos para ganar control
Justin Tadlock tiene un buen artículo titulado Cómo deshabilitar scripts y estilos en caso de que desee:
Pasar valores de PHP a JS con
wp_localize_script()
En su blog, Vladimir Prelovac tiene un excelente artículo titulado Mejores prácticas para agregar código JavaScript a los complementos de WordPress, donde analiza el uso
wp_localize_script()
para permitirle establecer el valor de las variables en su PHP del lado del servidor para luego ser utilizado en su Javascript del lado del cliente.Control de grano muy fino con
wp_print_scripts()
Y, por último, si necesita un control muy detallado, puede consultarlo
wp_print_scripts()
como se describe en Beer Planet en una publicación titulada Cómo incluir CSS y JavaScript condicionalmente y solo cuando sea necesario por las publicaciones .Epiloque
Eso es todo por las mejores prácticas de incluir archivos Javascript con WordPress. Si me perdí algo (que probablemente tengo), asegúrese de informarme en los comentarios para que pueda agregar una actualización para futuros viajeros.
fuente
admin_init
lugar de pediris_admin()
. Elimine el parámetro de versión si utiliza el CDN de Google; de lo contrario, el caché del navegador tendrá dos versiones: una sin la cadena de consulta de otros sitios y la suya.Para complementar la maravillosa ilustración de Mikes sobre el uso de colas, solo deseo señalar que los scripts incluidos como dependencias no necesitan ser puestos en cola ...
Usaré el ejemplo debajo de los Scripts en un encabezado de complemento en la respuesta de Mike.
Esto se puede recortar para leer.
Cuando establezca dependencias, WordPress las encontrará y las pondrá en cola listas para su secuencia de comandos, por lo que no necesita hacer ninguna llamada independiente para estas secuencias de comandos.
Además, algunos de ustedes se estarán preguntando si establecer una dependencia múltiple puede hacer que los scripts salgan en el orden incorrecto, aquí déjenme dar un ejemplo
Si la secuencia de comandos dos dependiera de la secuencia de comandos tres (es decir, la secuencia de comandos tres debería cargarse primero), esto no importaría, WordPress determinará las prioridades en cola para esas secuencias de comandos y las mostrará en el orden correcto, en resumen, todo se resuelve automáticamente para ti por WordPress.
fuente
init
no es el lugar adecuado para enviar la cola.Para pequeñas secuencias de comandos, que quizás no desee incluir en un archivo separado, por ejemplo, porque se generan dinámicamente, WordPress 4.5 y otras ofertas
wp_add_inline_script
. Esta función básicamente bloquea el script con otro script.Digamos, por ejemplo, que está desarrollando un tema y desea que su cliente pueda insertar sus propios scripts (como Google Analytics o AddThis) a través de la página de opciones. Luego, puede usar
wp_add_inline_script
para enganchar esa secuencia de comandos a su archivo js principal (digamosmainjs
) de esta manera:fuente
Mi forma preferida es lograr un buen rendimiento, por lo que, en lugar de usar
wp_enqueue_script
, uso HEREDOC con la API Fetch para cargar todo de forma asíncrona en paralelo:Y luego insértelos en la cabeza, a veces junto con estilos como este:
Resultando en una cascada que se ve así, cargando todo de una vez pero controlando el orden de ejecución:
Nota: Esto requiere el uso de la API Fetch, que no está disponible en todos los navegadores.
fuente