web-dev-qa-db-ja.com

スクリプト/スタイルのリストを取得し、それらをエンキューしたファイルを表示する

どのスクリプトとスタイルがページにロードされ、どのプラグイン/テーマ/ファイルがそれらをページに追加したかを示したいです。

次のようにして、すべてのスクリプトとスタイルを表示できます。

<?php
  global $wp_scripts, $wp_styles;
  var_dump( $wp_scripts );
  var_dump( $wp_styles );
?>

それとももっとエレガントにこの答えを使用して: どのように私はすべてのキューに登録されたスクリプトの$ハンドルを取得するのですか?

私は今、彼らがどこにエンキューされたのか見られるようになりたいです。たとえば、foobar.jsというJSファイルがあり、それがplugins/organge/orange.phpによってエンキューされた場合、このファイルの場所をスクリプトと一緒に出力したいと思います。

これは、何をロードしているのかを特定するための開発用です。

5
raison

これはあなたが考える方法では不可能です。 Reflections または debug_backtrace() を使用すれば、 はおそらく になるでしょうが、これを行う信頼できる方法はありません。 WordPressはファイル名を追跡する場所にスタックやキューを保持しません。

私が想像することができる only の事はただ行動の中と wp_enqueue_scripts() の中にフックすることです:

wp_enqueue_scripts

そして 添付のコールバック の追跡メカニズムを添付してください。 sに注意してください。これは、スクリプトをスタックにアタッチするために使用する関数ではありません。

<?php
/** Plugin Name: (WPSE #152658) Script Loader Callback Inspector */
add_action( 'wp_enqueue_scripts', function()
{
    var_dump( $GLOBALS['wp_filter'][ current_filter() ] );
}, PHP_INT_MAX -1 );

これにより、アタッチされたすべてのコールバックのキューができます。その後、IDEを使ってそれらを追跡することができます。

4
kaiser

私はこのようなものを使っています

 foreach( $wp_scripts->queue as $handle ) :
         $obj = $wp_scripts->registered [$handle];
         $filename = $obj->src;
1
Creative Choice