web-dev-qa-db-fra.com

Comment charger le plugin avant le wordpress jquery?

Je répare un plugin wordpress qui utilise une version 1.0.0 de jquery. La version de jquery incluse automatiquement dans wordpress est 1.11.0. Sur un site de test, le plugin est dépendant de la version 1.0.0 et ne fonctionne pas avec la dernière version.

Cependant, cela fonctionne sur un site de test car le plug-in est chargé AVANT le fichier wp-includes/js/jquery/jquery.js et qu'il utilise sa propre version de la bibliothèque jquery avant que le script ne soit écrasé par la dernière version de jquery. Cela ne produit aucune erreur dans la console.

Mais sur le site de production, il charge tous les plugins après le wp-includes/js/jquery/jquery.js. Alors, comment forcer le plugin à se charger avant que Wordpress ne charge le wp-includes/js/jquery/jquery.js fichier?

C'est le code dans le plugin:

add_action('init', 'myplugin_init');

function myplugin_init() {
wp_enqueue_script('jquery.min', plugins_url(MYPLUGIN_FOLDER . '/js/jquery.min.js'), array(), '1.0.0', false);
wp_enqueue_script('highcharts', plugins_url(MYPLUGIN_FOLDER . '/js/highcharts.js'), array(), '1.0.0', false);
wp_enqueue_script('exporting', plugins_url(MYPLUGIN_FOLDER . '/js/exporting.js'), array(), '1.0.0', false);
}

J'ai déjà essayé, à des fins de test, de forcer la mise en file d'attente de scripts de plug-in juste avant wp_head();, mais il continue de charger les fichiers de plug-in APRÈS le wp-includes/js/jquery/jquery.js.

<?php
    wp_enqueue_script('jquery.min', plugins_url(MYPLUGIN_FOLDER . '/js/jquery.min.js'), array(), '1.0.0', false);
    wp_enqueue_script('highcharts', plugins_url(MYPLUGIN_FOLDER . '/js/highcharts.js'), array(), '1.0.0', false);
    wp_enqueue_script('exporting', plugins_url(MYPLUGIN_FOLDER . '/js/exporting.js'), array(), '1.0.0', false);

wp_head();
    ?>

Toute aide est très appréciée. Merci.

1
Pau

1.0.0? Vraiment?! Quoi qu'il en soit, vous pouvez essayer le filtre print_scripts_array:

// Hack of wp_prototype_before_jquery() in "wp-includes/script-loader.php"
function wpse157295_print_scripts_array( $js_array ) {
    if ( false === $jquery = array_search( 'jquery-core', $js_array, true ) ) // Now 'jquery-core', not 'jquery'
        return $js_array;

    $keys = array( 'jquery.min', 'highcharts', 'exporting' );

    foreach ( $keys as $key ) {
        if ( ( $idx = array_search( $key, $js_array, true ) ) && $idx >= $jquery ) {

            unset($js_array[$idx]);

            array_splice( $js_array, $jquery, 0, $key );
        }
    }

    return $js_array;
}
add_filter( 'print_scripts_array', 'wpse157295_print_scripts_array' );
2
bonger