エンキューされたすべてのスクリプトの$ handleを取得するにはどうすればよいですか?


18

エンキューされた各スクリプトの$ handleを取得する方法はありますか?

すべてのハンドルを保持する配列があり、ループを介して各$ handleを使用して何かを実行できますか?

回答:


25

$wp_scriptsグローバルは、すべてのスクリプトデータを保持します。

function wpa54064_inspect_scripts() {
    global $wp_scripts;
    foreach( $wp_scripts->queue as $handle ) :
        echo $handle;
    endforeach;
}
add_action( 'wp_print_scripts', 'wpa54064_inspect_scripts' );

5
WP 4.2.0以降- 設定されていない場合$wp_scripts = wp_scripts();は初期化さ$wp_scriptsれるため、グローバルに直接アクセスするよりも優れている可能性があります。
jgraup

,9999ようadd_action( 'wp_print_scripts', wpa54064_inspect_scripts', 9999 );に優先度を追加する必要があります。それ以外の場合、functions.phpファイルによってデキューされるスクリプトが表示されます
RyszardJędraszyk

2

エンキューされた各スクリプトの$ handleを取得する方法はありますか?

$wp_scripts->queue特定のフックで検査することもできますが、WordPressで使用されているすべてのハンドルのリストは表示されません。信じられないかもしれません。

たとえばwp_headwp_print_scriptsアクションを実行するにフックして、$handlesWP v4.7.5のストックTwenty Seventeenテーマのリストを取得できます。

function get_enqueued_scripts () {
    $scripts = wp_scripts();
    var_dump( array_keys( $scripts->groups ) );
}

add_action( 'wp_head', 'get_enqueued_scripts' );

そして、$handlesfrom のリスト$wp_scripts->groupsが出力されます:

ここに画像の説明を入力してください

この時点で、存在するものを比較する場合$wp_scripts->queue、上記のサブセットのみが表示されます。

したがって、上記のようにハンドルの完全なリストが提供wp_print_scripts されない場合もあります。また、グループ化された依存関係に依存して取得することもできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.