私はWordPressバージョン4.7.2を実行しています。そしてそれはjQueryバージョン1.12を使用します。このバージョンをより高いものにアップデートする必要があります。以前は新しいバージョンに置き換えましたが、WordPressコアをアップグレードすると再び1.12に置き換えられます。 WordPressが恒久的に使用するjQueryのバージョンを変更するにはどうすればいいですか?
Warning: jQueryのコアバージョンである特に管理者用パネルを置き換えるべきではありません。多くのWordPressコア機能はバージョンに依存するかもしれないので。また、他のプラグインはコアに追加された
jQuery
バージョンに依存するかもしれません。
コアのjQuery
バージョンを確実に変更したい場合は、その場合はアクティブテーマのfunctions.php
ファイルに次のCODEを追加してください(このためのプラグインを作成したほうが良いでしょう)。
function replace_core_jquery_version() {
wp_deregister_script( 'jquery' );
// Change the URL if you want to load a local copy of jQuery from your own server.
wp_register_script( 'jquery', "https://code.jquery.com/jquery-3.1.1.min.js", array(), '3.1.1' );
}
add_action( 'wp_enqueue_scripts', 'replace_core_jquery_version' );
これはコアのjQuery
バージョンを置き換え、代わりにGoogleのサーバーからバージョン3.1.1
をロードします。
また、 推奨されません ですが、wp-admin
のjQueryバージョンを置き換えるために、次のCODEの追加行を使用することもできます。
add_action( 'admin_enqueue_scripts', 'replace_core_jquery_version' );
こうすれば、WordPressをアップデートした後でも、あなたは望むバージョンのjQuery
を手に入れることができます。
上記のreplace_core_jquery_version
関数は、WordPressコアによって追加されたjquery-migrate
スクリプトも削除します。最新バージョンのjQueryは、旧バージョンのjquery-migrate
では正しく機能しないため、これは合理的です。ただし、新しいバージョンのjquery-migrate
も含めることができます。その場合は、代わりに次の関数を使用してください。
function replace_core_jquery_version() {
wp_deregister_script( 'jquery-core' );
wp_register_script( 'jquery-core', "https://code.jquery.com/jquery-3.1.1.min.js", array(), '3.1.1' );
wp_deregister_script( 'jquery-migrate' );
wp_register_script( 'jquery-migrate', "https://code.jquery.com/jquery-migrate-3.0.0.min.js", array(), '3.0.0' );
}
この特定の問題のプラグインを開発しました。プラグインは、フロントエンドでのみロードされるため、WordPress jQueryを混乱させません。参照: jQuery Manager for WordPress
なぜ別のjQuery Updater/Manager/Developer/Debuggingツールなのですか?
開発者ツールでは、jQueryやjQuery Migrateの特定のバージョンを選択できないためです。実動バージョンと縮小バージョンの両方を提供します。以下の機能をご覧ください!
frontフロントエンドでのみ実行されます。WordPress admin/backendおよびWPカスタマイザと干渉しません(互換性の理由から)参照: https://core.trac.wordpress.org/ticket/451 および https://core.trac.wordpress.org/ticket/3711
✅オン/オフの切り替え jQueryまたはjQuery Migrate
-jQueryおよび/またはjQuery Migrateの特定のバージョンをアクティブ化する
さらに多く!コードはオープンソースですので、あなたはそれを研究し、それから学び、貢献することができます。
WordPressは実際にはjqueryではなくjquery-coreハンドルを使用します。
// jQuery $scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.12.4' ); $scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.12.4' ); $scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.4.1' );
jqueryハンドルは単にロードするエイリアスですjquery-core with jquery-migrate
エイリアスに関する詳細情報を参照してください: wp_register_script multiple identifiers?
以下の例では、公式のjQuery CDNを https://code.jquery.com で使用しています。また、script_loader_tagを使用して、CDN属性を追加できます。
次のコードを使用できます。
// Front-end not excuted in the wp admin and the wp customizer (for compatibility reasons)
// See: https://core.trac.wordpress.org/ticket/45130 and https://core.trac.wordpress.org/ticket/37110
function wp_jquery_manager_plugin_front_end_scripts() {
$wp_admin = is_admin();
$wp_customizer = is_customize_preview();
// jQuery
if ( $wp_admin || $wp_customizer ) {
// echo 'We are in the WP Admin or in the WP Customizer';
return;
}
else {
// Deregister WP core jQuery, see https://github.com/Remzi1993/wp-jquery-manager/issues/2 and https://github.com/WordPress/WordPress/blob/91da29d9afaa664eb84e1261ebb916b18a362aa9/wp-includes/script-loader.php#L226
wp_deregister_script( 'jquery' ); // the jquery handle is just an alias to load jquery-core with jquery-migrate
// Deregister WP jQuery
wp_deregister_script( 'jquery-core' );
// Deregister WP jQuery Migrate
wp_deregister_script( 'jquery-migrate' );
// Register jQuery in the head
wp_register_script( 'jquery-core', 'https://code.jquery.com/jquery-3.3.1.min.js', array(), null, false );
/**
* Register jquery using jquery-core as a dependency, so other scripts could use the jquery handle
* see https://wordpress.stackexchange.com/questions/283828/wp-register-script-multiple-identifiers
* We first register the script and afther that we enqueue it, see why:
* https://wordpress.stackexchange.com/questions/82490/when-should-i-use-wp-register-script-with-wp-enqueue-script-vs-just-wp-enque
* https://stackoverflow.com/questions/39653993/what-is-diffrence-between-wp-enqueue-script-and-wp-register-script
*/
wp_register_script( 'jquery', false, array( 'jquery-core' ), null, false );
wp_enqueue_script( 'jquery' );
}
}
add_action( 'wp_enqueue_scripts', 'wp_jquery_manager_plugin_front_end_scripts' );
function add_jquery_attributes( $tag, $handle ) {
if ( 'jquery-core' === $handle ) {
return str_replace( "type='text/javascript'", "type='text/javascript' integrity='sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=' crossorigin='anonymous'", $tag );
}
return $tag;
}
add_filter( 'script_loader_tag', 'add_jquery_attributes', 10, 2 );