私は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.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' );