web-dev-qa-db-fra.com

Suppression de jQuery migrate et utilisation de dépendances

La configuration de jQuery dans ma section de scripts de mise en file d'attente est une dépendance, telle que:

wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'scripts', get_template_directory_uri() . '/js/scripts.min.js', array( 'jquery' ) );

Maintenant, je veux supprimer jquery-migrate, mais garder jQuery lui-même évidemment, donc j'ai trouvé cette réponse déclarant de le faire comme ceci:

add_filter( 'wp_default_scripts', 'remove_jquery_migrate' );

function remove_jquery_migrate( &$scripts){
    if(!is_admin()){
        $scripts->remove( 'jquery');
        $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.2.1' );
    }
}

Tout d'abord, je pensais que nous avions supprimé jQuery migrate ici, donc je ne sais pas trop pourquoi il est nécessaire d'ajouter la dernière version avec le commentaire:

1.2.1 = dernière version de jquery-migrate

Deuxièmement, avec la façon dont j'ai configuré mes scripts de mise en file d'attente, en quoi cela affecte-t-il les dépendances puisque j'ai maintenant supprimé jQuery et ajouté jquery-core?

Y a-t-il une meilleure façon de gérer cela?

2
Brett

Première partie...

OK, donc dans votre thème/plugin vous avez:

wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'scripts', get_template_directory_uri() . '/js/scripts.min.js', array( 'jquery' ) );

La première ligne, mettre en file d'attente jquery n'est pas nécessaire - vous mettez jquery comme dépendance dans la deuxième ligne, elle sera donc incluse de toute façon.

Ces lignes informent WP que vous souhaitez mettre en file d'attente le fichier donné sous la forme scripts et que le script doit être enregistré avec le handle jquery - il sera donc automatiquement mis en file d'attente avant votre script.

Et la deuxième partie ...

add_filter( 'wp_default_scripts', 'remove_jquery_migrate' );

function remove_jquery_migrate( &$scripts){
    if(!is_admin()){
        $scripts->remove( 'jquery');
        $scripts->add( 'jquery', false, array( 'jquery-core' ), '1.2.1' );
    }
}

Comme vous pouvez le voir dans Plugin API/Action Reference , ce hook s'appelle assez tôt ... Waaaaay avant wp_enqueue_scripts.

Et qu'est-ce qu'il fait vraiment?

Il supprime le script avec le descripteur jquery des scripts par défaut, puis l'ajoute avec différentes dépendances (uniquement jquery-core).

La méthode add vient de WP_Dependencies class:

WP_Dependencies::add( string $handle, string $src, array $deps = array(), string|bool|null $ver = false, mixed $args = null )

Et pourquoi cette version?

La version 1.2.1 est juste un rappel de cache. WordPress ne l'analyse pas. Il est utilisé en tant que paramètre ?ver, de sorte que les navigateurs doivent recharger ce fichier lorsque la version change ... Vous pouvez y insérer n'importe quoi - bien sûr, utiliser une version réelle d'un script donné est une bonne idée;)

1
Krzysiek Dróżdż