Je souhaite mettre en file d'attente un fichier .js sur mon thème enfant

16

J'ai essayé de mettre en file d'attente un fichier .js personnalisé dans mon répertoire de thème enfant.

Dans le functions.php de mon thème enfant, je trouve le code suivant

/* 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' ) );
}

où seule cette partie a été implémentée par moi et est censée charger mon custom.script.js depuis le dossier js /

wp_enqueue_script( 'custom-script.js', 'js/custom-script.js', array('jquery') );

Malheureusement, il ne le fait pas, quelqu'un peut-il aider?

* Mise à jour 2

Le code ressemble maintenant à ceci et cela fonctionne, cela ne fonctionnait pas quand je viens d'ajouter la fonction à l'autre add_action. Merci à tous pour votre aide! Je me demande quand même s'il n'y a pas moyen de couper un peu ce code.

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' )
);
        }

À quoi sert cette ligne?

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

Est-ce nécessaire?

MrKainig
la source
wp_enqueue_script( 'custom-script.js', get_stylesheet_directory_uri() . 'js/custom-script.js', array('jquery') );
Pieter Goosen
@Pieter J'ai adapté votre changement mais cela ne fonctionne toujours pas. C'est ce que j'ai dans mon fichier .js et cela fonctionne si je le mets directement dans page.php par exemple: <script> if (jQuery) {alert ("La bibliothèque jQuery est chargée!"); } else {alert ("La bibliothèque jQuery est introuvable!"); } </script>
MrKainig
@Pieter D'accord, j'ai mis le code dans la question
MrKainig
Supprimez les balises de script de votre fichier js
Pieter Goosen

Réponses:

31

Voici un exemple de travail:

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' )
);
        }

Ou comme ça qui se charge apparemment plus vite:

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' );

Source http://codex.wordpress.org/Function_Reference/wp_enqueue_script

get_template_directory_uri() ne fonctionnera que dans un thème parent.

Brad Dalton
la source
1
Pourquoi n'utilisez-vous pas get_stylesheet_directory_uri()?
Pieter Goosen
Ils fonctionnent tous les deux sur la base de mes tests.
Brad Dalton
J'ai essayé le premier, ça n'a pas marché. Pouvez-vous peut-être publier le blog de code complet (y compris mes files d'attente existantes et en cours de travail)? Parce que je ne sais pas comment implémenter correctement votre code avec celui qui est déjà dans mes fonctions.php
MrKainig
2
Oui, mais get_stylesheet_directory_uri()c'est plus rapide :-)
Pieter Goosen
Ce n'est qu'un exemple de travail. Certains travaux sont nécessaires en votre nom pour savoir comment cela fonctionne avec votre code. Vous pouvez maintenant retravailler votre code afin qu'il charge vos scripts dans votre thème.
Brad Dalton