スクリプト/スタイルと依存関係のURLを取得する
スクリプトXYとZが与えられた場合、PHPでXYZとその依存関係のリストを取得するにはどうすればよいですか?
依存関係のあるいくつかのスクリプトをロードする必要があります。
通常はを介してこれを行いますwp_enqueue_script
が、この状況では、これらのスクリプトをWebコンポーネントのシャドウDOMにロードする必要がwp_head
ありwp_footer
、信頼できず、JSで自分でDOM要素を構築する必要があります。これは、スタイリングの目的で、コンポーネントのコンテンツがページの残りの部分から分離されるようにするためです。
回答
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
場合は、が可能であることに注意してください。たとえば、依存関係として持つデフォルトのハンドルなどです。(ただし、心配しないでください。依存関係は配列内にあります。)次に、上記の例のように、配列には実際のファイルも含まれます。jquery
jquery-migrate
to_do
to_do
file.js