web-dev-qa-db-ja.com

ワードプレスjqueryの前にプラグインをロードする方法?

私はjqueryの1.0.0バージョンを使用するワードプレスプラグインを修正しています。 wordpressに自動的に含まれるjqueryのバージョンは1.11.0です。テストサイトでは、プラグインは1.0.0 jqueryに依存しており、最新バージョンでは動作しません。

ただし、プラグインはwp-includes/js/jquery/jquery.jsの前にロードされ、スクリプトが最新のjqueryバージョンで上書きされる前に独自のjqueryライブラリバージョンを使用するため、テストサイトでは機能します。コンソールにエラーは発生しません。

しかし、本番サイトでは、wp-includes/js/jquery/jquery.jsの後にすべてのプラグインをロードします。したがって、wordpressがwp-includes/js/jquery/jquery.jsをロードする前に、プラグインを強制的にロードする方法ファイル?

これはプラグインのコードです:

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);
}

テスト目的で、wp_head();の直前にプラグインスクリプトのエンキューを強制しようとしましたが、それでも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();
    ?>

任意の助けは大歓迎です。ありがとう。

1
Pau

1.0.0?本当に?!とにかく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