web-dev-qa-db-fra.com

wp_enqueue_script () ne fonctionne pas du tout

J'essaie de mettre en file d'attente les fichiers JavaScript à l'aide de wp_enqueue_script (), mais cela ne fonctionne pas du tout. Voici mon code:

function load_css_js() {
    wp_enqueue_style('gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css');
    wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', true);
    wp_register_script('gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , true);
    wp_enqueue_script('gdgt-base');
}

add_action('wp_enqueue_scripts', 'load_css_js');

Cependant, lorsque je désenregistre le nom de fichier par défaut WP Javasciprt et que j’enregistre jquery ailleurs, cela fonctionne. Qu'est-ce qui peut causer ce problème? Merci pour l'aide!

5
Mehedi Hassan

wp_enqueue_style et wp_enqueue_script accepte de nombreux paramètres et il est très important de les utiliser dans le bon ordre, sinon ces fonctions échoueront.

Voici un ensemble complet de paramètres pour chaque fonction.

wp_enqueue_style( $handle, $src, $deps, $ver, $media );
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

Dans votre wp_enqueue_style, vous définissez correctement $handle, $src mais $deps à true qui n’est pas correct. Idem pour wp_enqueue_script.

Alors voici votre fonction fixe.

function load_css_js() {
    wp_enqueue_style( 'gdgt-base', get_template_directory_uri() . '/css/gdgt-base.css', false, NULL, 'all' );
    wp_enqueue_style( 'gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css', false, NULL, 'all' );

    wp_register_script( 'gdgt-base', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ), NULL, false );
    wp_enqueue_script( 'gdgt-base' );
}

add_action( 'wp_enqueue_scripts', 'load_css_js' );

Pour plus d'informations, lisez la documentation de chaque fonction sur le codex.

10
Robert hue

Pour d'autres idiots comme moi, je pensais contribuer ici. :-)

Je viens de passer une heure parce que j'avais écrit array( '' ) au lieu de array() dans les dépendances.

Sachez simplement qu'il y a une différence entre:

wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array( '' ), false, true );

et

wp_enqueue_script( 'footerScript', get_stylesheet_directory_uri() . '/assets/js/appFooter.js', array(), false, true );

... Le premier ne sera jamais chargé. Le second le fera. :-)

La réponse de @ Robert_Hue m'a conduit à ma réponse.

0
Zeth

Lors de l'enregistrement et de la mise en file d'attente des scripts, vous n'avez pas besoin d'appeler wp_register_script () et wp_enqueue_script (). Appelez simplement wp_enqueue_script ().

La syntaxe de base de wp_enque_script est la suivante:

wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )


Maintenant, selon votre code, cela devrait ressembler à ceci:

function load_css_js() {
            wp_enqueue_style('gdgt-base-style', get_template_directory_uri() . '/css/gdgt-base.css');
            wp_enqueue_style('gdgt-icon', get_template_directory_uri() . '/icons/css/gdgt.css');
            wp_enqueue_script('gdgt-base-script', get_template_directory_uri() . '/js/gdgt-base.js', array( 'jquery' ) , '2019' true);
        }

add_action('wp_enqueue_scripts', 'load_css_js');

[visiter]: https://developer.wordpress.org/reference/functions/wp_enqueue_script/
documentation pour plus d'informations.

0
EGWorldNP