web-dev-qa-db-ja.com

JQueryの移行を削除し、依存関係を処理する

次のように、エンキュースクリプトのセクションに依存関係として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を追加したので、それが依存関係にどのように影響するのでしょうか。

これを処理するためのより良い方法はありますか?

2
Brett

第一部...

そう、テーマ/プラグインには以下のものがあります。

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パラメータとして使われるので、ブラウザはバージョンが変わったときにそのファイルをリロードしなければなりません...そこに何かを入れることができます - もちろん、与えられたスクリプトの実際のバージョンを使うのは良い考えです;

1