Получить список сценариев/стилей и показать файл, который поставил их в очередь


Я хочу показать, какие скрипты и стили загружены на страницу и какой плагин/тема/файл добавил их на страницу.

Мы можем показать все сценарии и стили, используя:

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

Или более элегантно используя этот ответ: Как мне получить дескриптор $ для всех сценариев, поставленных в очередь?

Теперь я хочу видеть, где они были поставлены в очередь. Например, если бы у меня был файл JS под названием foobar.js и он был поставлен в очередь plugins/organge/orange.php Я бы хотел чтобы вывести это местоположение файла вместе со сценарием.

Это для разработки, чтобы помочь изолировать, что загружается, что загружается.

Author: Community, 2014-07-04

2 answers

Это невозможно так, как вы думаете. Это , возможно, было бы возможно, если бы вы использовали Отражения или debug_backtrace(), но надежного способа сделать это нет. WordPress не хранит стек или очередь, в которых он отслеживает имена файлов.

Единственное, что я мог себе представить, это просто включиться в действие и внутри 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.

 5
Author: kaiser, 2014-07-04 14:43:16

Я использую что-то вроде этого

 foreach( $wp_scripts->queue as $handle ) :
         $obj = $wp_scripts->registered [$handle];
         $filename = $obj->src;
 1
Author: Creative Choice, 2014-12-02 04:36:44