Quiero poner en cola un archivo .js para el tema de mi hijo

16

Traté de poner en cola un archivo .js personalizado en mi directorio de temas secundarios.

En funciones.php del tema de mi hijo, encuentro el siguiente código

/* After this. you can override Accessible Zen's pluggable functions or add your own.
 * Remember, do your best to stay accessible! :)
 *
 */
 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 se supone que carga 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 se ve así y funciona, no funcionó cuando agregué la función a la otra add_action. ¡Gracias a todos por su ayuda! Aún así, me pregunto si no hay una manera de cortar 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' ) );
}

/*add my custom jquery script*/
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é es esta línea?

wp_enqueue_script( 'responsive-menu', get_bloginfo( 'stylesheet_directory' ) . '/js/responsive-menu.js', array( 'jquery' ), '1.0.0' );

¿Es necesario?

MrKainig
fuente
wp_enqueue_script( 'custom-script.js', get_stylesheet_directory_uri() . 'js/custom-script.js', array('jquery') );
Pieter Goosen
@Pieter Adapte tu cambio pero aún no funciona. Esto es lo que tengo en mi archivo .js y funciona si lo pongo directamente en page.php, por ejemplo: <script> if (jQuery) {alert ("¡la biblioteca jQuery está cargada!"); } else {alert ("¡la biblioteca jQuery no se encuentra!"); } </script>
MrKainig
@Pieter Ok, puse el código en la pregunta
MrKainig,
Elimine las etiquetas de script de su archivo js
Pieter Goosen

Respuestas:

31

Aquí hay un ejemplo de trabajo:

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 así, que aparentemente se 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 principal.

Brad Dalton
fuente
1
¿Por qué no lo usas get_stylesheet_directory_uri()?
Pieter Goosen
Ambos trabajan según mis pruebas.
Brad Dalton
Probé el primero, no funcionó. ¿Puede publicar el blog de código completo (incluidas mis colas existentes y de trabajo)? Porque no sé cómo implementar adecuadamente su código con el que ya está en mis funciones.php
MrKainig
2
Sí, lo hacen, pero get_stylesheet_directory_uri()es más rápido :-)
Pieter Goosen
Es solo un ejemplo de trabajo. Se requiere algo de trabajo en su nombre para aprender cómo funciona con su código. Ahora puede volver a trabajar su código para que cargue sus scripts en su tema.
Brad Dalton