次のように、エンキュースクリプトのセクションに依存関係としてjQueryを設定しています。
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'scripts', get_template_directory_uri() . '/js/scripts.min.js', array( 'jquery' ) );
さて、jquery-migrateを削除したいのですが、明らかにjQueryをそのままにしておくので、 この回答 は次のように記述していることがわかりました。
add_filter( 'wp_default_scripts', 'remove_jquery_migrate' );
function remove_jquery_migrate( &$scripts){
if(!is_admin()){
$scripts->remove( 'jquery');
$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.2.1' );
}
}
まず、ここではjQuery migrateを削除したと思いますので、最新バージョンを追加する必要性がコメントに含まれているかどうかわからないです。
1.2.1 = jquery-migrateの最新バージョン
次に、エンキュースクリプトを設定する方法で、jQuery
を削除してjquery-core
を追加したので、それが依存関係にどのように影響するのでしょうか。
これを処理するためのより良い方法はありますか?
そう、テーマ/プラグインには以下のものがあります。
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'scripts', get_template_directory_uri() . '/js/scripts.min.js', array( 'jquery' ) );
最初の行、jquery
をエンキューする必要はありません - jquery
を依存関係として2行目に入れるので、それはとにかく含まれます。
これらの行はWPに、与えられたファイルをscripts
としてエンキューしたいこと、そしてハンドルjquery
で登録されたスクリプトが必要であることを伝えます - それであなたのスクリプトの前に自動的にエンキューされます。
add_filter( 'wp_default_scripts', 'remove_jquery_migrate' );
function remove_jquery_migrate( &$scripts){
if(!is_admin()){
$scripts->remove( 'jquery');
$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.2.1' );
}
}
プラグインAPI /アクションリファレンス にあるように、このフックはかなり早く呼び出されます... wp_enqueue_scripts
の前のWaaaaay。
そして、それは本当に何をしますか?
デフォルトのスクリプトからハンドルjquery
を持つスクリプトを削除してから、異なる依存関係を持つスクリプトを追加します(jquery-core
のみ)。
add
メソッドは WP_Dependencies
classに由来します。
WP_Dependencies::add( string $handle, string $src, array $deps = array(), string|bool|null $ver = false, mixed $args = null )
バージョン1.2.1
は単なるキャッシュブースターです。 WordPressはそれを分析しません。これは?ver
パラメータとして使われるので、ブラウザはバージョンが変わったときにそのファイルをリロードしなければなりません...そこに何かを入れることができます - もちろん、与えられたスクリプトの実際のバージョンを使うのは良い考えです;