Получить список сценариев/стилей и показать файл, который поставил их в очередь
Я хочу показать, какие скрипты и стили загружены на страницу и какой плагин/тема/файл добавил их на страницу.
Мы можем показать все сценарии и стили, используя:
<?php
global $wp_scripts, $wp_styles;
var_dump( $wp_scripts );
var_dump( $wp_styles );
?>
Или более элегантно используя этот ответ: Как мне получить дескриптор $ для всех сценариев, поставленных в очередь?
Теперь я хочу видеть, где они были поставлены в очередь. Например, если бы у меня был файл JS под названием foobar.js и он был поставлен в очередь plugins/organge/orange.php Я бы хотел чтобы вывести это местоположение файла вместе со сценарием.
Это для разработки, чтобы помочь изолировать, что загружается, что загружается.
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.
Я использую что-то вроде этого
foreach( $wp_scripts->queue as $handle ) :
$obj = $wp_scripts->registered [$handle];
$filename = $obj->src;