web-dev-qa-db-fra.com

Utiliser plusieurs versions de jQuery tout en l'appelant comme WP aime

J'ai deux plugins JS dans mon plugin. L'un utilise jQuery 1.7.1 et l'autre 1.9.1.

J'ai besoin que chacun utilise une version différente. C'est comme ça en ce moment:

Plugin fichier php:

wp_register_script('jq-1.9.1-js', 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js');
wp_enqueue_script('jq-1.9.1-js');
wp_register_script('jq-1.7.1-js', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');
wp_enqueue_script('jq-1.7.1-js');

Fichier JS plugin:

    var $j = jQuery.noConflict();

    $j(document).ready(function() {
    // plugin 1
    $j('.someClass').plugin1({
        // options
    });
    // plugin 2
    $j('.someClass').plugin2({
        // options
    });
}

J'ai beaucoup cherché dans Google et j'ai trouvé des solutions pour plusieurs versions, mais elles ne prenaient pas en compte la manière appropriée d'inclure des scripts dans WP (utilisation de register et de file d'attente).

Comment utiliser deux versions de jQuery pour deux plug-ins JS tout en appelant les scripts de la même manière que WP?

Merci

2
corre

J'ai trouvé qu'il était préférable pour moi d'utiliser la dernière version de jQuery (que WordPress charge par défaut) et de traiter le problème d'incompatibilité en modifiant les fichiers du plug-in JS incompatibles avec la dernière version de jQuery.

Remarque: la raison pour laquelle j'ai choisi cette solution est que, dans la plupart des cas, l'incompatibilité du plug-in JS avec les versions jQuery les plus récentes est le résultat de l'utilisation d'une méthode ou d'une fonction obsolète dans le code et du remplacement de l'appel par un appel à une fonction/méthode existante. résoudra le problème et vous dispensera d’inclure des scripts jQuery redondants.

En outre, si le plug-in devait être mis à jour à l'avenir, vous ne devriez pas rencontrer de problèmes pour mettre à jour celui que vous utilisez actuellement, car la version la plus récente prendrait probablement en charge la dernière version de jQuery.

0
corre