Cómo incluir un archivo .js en mi tema hijo de WordPress
Intenté cargar un archivo .js personalizado en el directorio de mi tema hijo.
En el functions.php de mi tema hijo encontré el siguiente código
/* Después de esto, puedes sobrescribir las funciones pluggable de Accessible Zen o añadir las tuyas.
* Recuerda, ¡haz tu mejor esfuerzo para mantener la accesibilidad! :)
*
*/
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}
donde solo esta parte fue implementada por mí y debería cargar mi custom-script.js desde la carpeta js/
wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );
Desafortunadamente no lo hace, ¿alguien puede ayudar?
*Actualización 2
El código ahora luce así y funciona, no funcionaba cuando solo añadía la función al otro add_action. ¡Gracias a todos por la ayuda! Aún me pregunto si no hay una manera de acortar este código un poco.
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}
/*añado mi script jquery personalizado*/
add_action( 'wp_enqueue_scripts', 'menu_scripts' );
function menu_scripts() {
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/js/custom-script.js',
array( 'jquery' )
);
}
¿Para qué sirve esta línea?
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
¿Es necesaria?

Aquí tienes un ejemplo funcional:
add_action( 'wp_enqueue_scripts', 'menu_scripts' );
function menu_scripts() {
wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/js/custom_script.js',
array( 'jquery' )
);
}
O como este que aparentemente carga más rápido:
function my_scripts_method() {
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/js/custom_script.js',
array( 'jquery' )
);
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
Fuente http://codex.wordpress.org/Function_Reference/wp_enqueue_script
get_template_directory_uri()
solo funcionará en un tema padre.

Probé el primero y no funcionó. ¿Podrías publicar el bloque de código completo (incluyendo mis enqueues existentes que sí funcionan)? Porque no sé cómo implementar correctamente tu código con el que ya está en mi functions.php

Sí, lo hacen, pero get_stylesheet_directory_uri()
es más rápido :-)

Es solo un ejemplo funcional. Se requiere algo de trabajo de tu parte para aprender cómo funciona con tu código. Ahora puedes reescribir tu código para que cargue tus scripts en tu tema.

@BradDalton Bueno, lo intenté pero no funcionó para mí. ¿Tengo que añadir un segundo "add action" o una segunda "function" o configurar el "add action" o configurar la "function"? Hay tantas posibilidades. Si alguien pudiera explicarme brevemente cuál es la mejor práctica - o lo que realmente funciona - mostrándome cómo implementar ese ejemplo funcional en mi código existente. Eso sería realmente genial y me ahorraría un dolor de cabeza.

¿Qué has probado hasta ahora? Los ejemplos anteriores están probados y funcionan.

@MrKainig revisa en la consola de tu navegador si tu script se está cargando y si recibes algún error de jQuery. ¿Eliminaste las etiquetas de script en tu archivo js? No deberían estar ahí. No veo que el código en esta respuesta no funcione para ti. Tu script debería cargarse.

@BradDalton agregué la función dentro de mi add_action existente, pero no funcionó. Cuando copié el ejemplo funcional 1:1 debajo de mi add_action existente, funcionó perfectamente.
La publicación fue actualizada una vez más. Gracias chicos :)

Gracias por la parte "get_template_directory_uri() solo funcionará en un tema padre". Me dio dolor de cabeza por un par de días.

¡Verifica tus handles! El script puede fallar al cargar si eliges un handle que ya ha sido utilizado en otro lugar. Si todo parece correcto sin errores pero el script no se carga, revisa la instalación por algo más que esté usando el mismo handle.
En mi caso, como estoy extendiendo un tema padre a través de un tema hijo, (¡tontamente en retrospectiva!) seguí la misma convención de nombres del padre. ¡Lección aprendida!

Normalmente lo hago de esta forma:
Ve al tema hijo
- crea una carpeta js dentro del tema hijo
- crea un archivo script.js dentro de la carpeta js
y luego pega este código dentro del archivo script.js:
add_action( 'wp_enqueue_scripts', 'custom_scripts', 10 );
function custom_scripts() {
wp_enqueue_script('custom_javascript', get_stylesheet_directory_uri() . '/js/script.js', array('jquery'), '1.0.0', true );
}
