web-dev-qa-db-fra.com

Méthode correcte pour exécuter des scripts avec des dépendances sans mise en file d'attente?

Avec la mise en file d'attente, vous modifiez $deps en votre script ou en un ensemble de scripts à exécuter en premier pour que votre script fonctionne.

<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>

Par exemple:

function script_that_requires_jquery() {
    wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );

Je le fais habituellement mais cela ne semble pas toujours fonctionner:

function script_that_requires_jquery(){
    if ( wp_script_is( 'jquery', 'done' ) ) { ?>
        <script type="text/javascript">
        (function($) {
            // jquery function goes here    
        })( jQuery );
        </script>
    <?php }
}
add_action('wp_footer', 'script_that_requires_jquery');

Peut-être que c'est ça?

function script_that_requires_jquery(){
    wp_enqueue_script( 'jquery' );
    ?>
        <script type="text/javascript">
        (function($) {
            // jquery function goes here    
        })( jQuery );
        </script>
    <?php 
}
add_action('wp_footer', 'script_that_requires_jquery');
5
Bryan Willis
function script_that_requires_jquery() {
    wp_register_script( 'script-with-dependency', 'http://www.example.com/script-with-dependency.js', array( 'jquery' ), '1.0.0', true );
    wp_enqueue_script( 'script-with-dependency' );
}
add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery' );

C'est la bonne méthode pour mettre en file d'attente les scripts (et les styles d'ailleurs). Vous devriez toujours utiliser wp_enqueue_scripts pour lier les scripts et les styles à.

Vous devez vérifier quelques points lorsque vous enregistrez des scripts et des styles. Tout d'abord, assurez-vous que l'ordre dans lequel vous les placez dans votre fonction est correct. Le premier script de la fonction sera exécuté en premier, le second en second, etc. Ainsi, vous ne pouvez pas placer votre script dépendant de jquery avant jquery, cela ne fonctionnera pas.

L’autre piège potentiel ici est add_action( $hook, $function_to_add, $priority, $accepted_args ); . Sans définir le paramètre $priority, il y a toujours un risque que votre script/style soit chargé before d'autres scripts/styles qui pourraient écraser le vôtre.

Dans votre cas, votre script peut être chargé avant jQuery, il ne fonctionnera donc pas. I always définit ce paramètre avec une priorité très faible (nombre très élevé) lorsque j'ajoute des scripts et des styles personnalisés. Cela garantit que mes scripts et mes styles sont chargés en dernier. Donc je vais faire quelque chose comme ça

add_action( 'wp_enqueue_scripts', 'script_that_requires_jquery', 999 );
4
Pieter Goosen

Il ne suffit pas de mettre en file d'attente jquery (ou toute autre bibliothèque) avant votre code dépendant de jquery, vous devez également vous assurer que jquery est chargé avant que votre code soit analysé/exécuté par le navigateur.

0
Mark Kaplun