スクリプト/スタイルと依存関係のURLを取得する

Aug 16 2020

スクリプトXYとZが与えられた場合、PHPでXYZとその依存関係のリストを取得するにはどうすればよいですか?

依存関係のあるいくつかのスクリプトをロードする必要があります。

通常はを介してこれを行いますwp_enqueue_scriptが、この状況では、これらのスクリプトをWebコンポーネントのシャドウDOMにロードする必要がwp_headありwp_footer、信頼できず、JSで自分でDOM要素を構築する必要があります。これは、スタイリングの目的で、コンポーネントのコンテンツがページの残りの部分から分離されるようにするためです。

回答

2 SallyCJ Aug 16 2020 at 08:05

wp_enqueue_script()そしてwp_enqueue_style()両方の使用WP_Dependencies::add()の新しいインスタンスを初期化し_WP_Dependencyます(wp_scripts()とwp_styles())ので、すべてのスクリプトの依存関係はに格納されdepsたクラスのインスタンスのプロパティ。

しかし、そのプロパティのみが格納ハンドルスクリプトの依存関係の名前、例えばjquery-migrateおよびjquery-core(ハンドルネーム:デフォルト/コアjQueryのスクリプトのためjquery)、その依存ファイル(スクリプト/スタイルシート)の実際のURLを取得するために、我々は、使用する必要がありますWP_Dependencies::all_deps()次に、ループしWP_Dependencies::$to_doて依存関係のsrc値を取得します。

// Enqueue a script:
wp_enqueue_script( 'my-script', '/path/to/file.js', [ 'jquery' ] );

// Get all its dependencies:
wp_scripts()->all_deps( 'my-script' );
foreach ( wp_scripts()->to_do as $handle ) {
    $dep = wp_scripts()->registered[ $handle ];
    var_dump( $dep->handle, $dep->src );
    // or do something with $dep->src ... } // Enqueue a style: wp_enqueue_style( 'my-style', '/path/to/file.css', [ 'foo-dep' ] ); // Get all its dependencies: wp_styles()->all_deps( 'my-style' ); foreach ( wp_styles()->to_do as $handle ) {
    $dep = wp_styles()->registered[ $handle ];
    var_dump( $dep->handle, $dep->src );
    // or do something with $dep->src ...
}

依存関係に依存関係が含まれて$dep->srcいるfalse場合は、が可能であることに注意してください。たとえば、依存関係として持つデフォルトのハンドルなどです。(ただし、心配しないでください。依存関係は配列内にあります。)次に、上記の例のように、配列には実際のファイルも含まれます。jqueryjquery-migrateto_doto_dofile.js