Ось вам:
HTML-список із усіма файлами шаблонів, які використовуються для поточної цільової сторінки, включаючи всі частини шаблонів із плагінів, дочірніх та / або батьківських комбінацій тем , все в одному рядку коду:
echo '<ul><li>'.implode('</li><li>', str_replace(str_replace('\\', '/', ABSPATH).'wp-content/', '', array_slice(str_replace('\\', '/', get_included_files()), (array_search(str_replace('\\', '/', ABSPATH).'wp-includes/template-loader.php', str_replace('\\', '/', get_included_files())) + 1)))).'</li></ul>';
Ви МОЖЕТЕ перевірити, чи ваш сервер не повертає сумнірні косої риски жодним шляхом . Не забудьте розмістити це після того, як усі файли шаблонів були фактично використані, як, наприклад, у footer.php, але до того , як відобразиться бар адміністратора .
якщо admin-bar stuff
шлях відображається вгорі або будь-який інший файл, змініть ім'я файлу template-loader.php
в цьому рядку коду на: яке б ім’я фільму вам не потрібно було перервати. Часто:class-wp-admin-bar.php
якщо вам це потрібно на панелі адміністратора, використовуйте правий пріоритет (якнайшвидший), щоб зробити так, щоб у кінці цього списку не було введено жодних файлів . Наприклад:
add_action('admin_bar_menu', 'my_adminbar_template_monitor', -5);
першочергово -5
змушуйте спочатку завантажувати. Ключ - зателефонувати get_included_files()
в потрібний момент, інакше потрібен певний масив!
Щоб розбити це:
Ви не можете зібрати всі включені файли шаблонів без PHP зворотнього ходу. Суперглобали всередині template_include
збирають їх усіх . Інший спосіб - "розмістити маркер" у кожному файлі шаблону, але якщо вам потрібно спочатку взаємодіяти з файлами, ви затуманюєте час та всю ідею.
1) Нам потрібно перевірити все файли, які використовували поточний запит Wordpress. А їх багато! Не дивуйтеся, якщо ви використовуєте 300 файлів, перш ніж навіть буде зареєстровано функцію.php.
$included_files = str_replace('\\', '/', get_included_files());
Ми використовуємо PHP натиснувши get_included_files (), перетворюючи зворотні косої риси в передні нахили, щоб відповідати більшості повернених шляхів Wordpress.
2) Ми вирізаємо цей масив з того місця, де зареєстрований шаблон-loader.php. Після цього у заповнений get_included_files () повинні бути заповнені лише файли шаблонів.
/* The magic point, we need to find its position in the array */
$path = str_replace('\\', '/', ABSPATH);
$key = $path.'wp-includes/template-loader.php';
$offset = array_search($key, $included_files);
/* Get rid of the magic point itself in the new created array */
$offset = ($offset + 1);
$output = array_slice($included_files, $offset);
3) Скоротіть результати, нам не потрібен шлях, поки папка теми чи папка плагінів, як шаблони, що використовуються, не можуть змішуватися із плагінів, папок теми чи дочірніх тем.
$replacement = $path.'wp-content/';
$output = str_replace($replacement, '', $output);
4) Нарешті, перетворіть з масиву в приємний список HTML
$output = '<ul><li>'.implode('</li><li>', $output).'</li></ul>';
Остання зміна може знадобитися в part3 ) -заміні , якщо ви не хочете, щоб вимагали включені плагіни. Вони можуть дзвонити class-files
пізно і "перехоплювати" під час обробки виводу шаблону.
Однак я вважав розумним залишати їх видимими, оскільки ідея полягає у тому, щоб відслідковувати завантажені , навіть якщо це не "шаблон", який надає вихід на цьому етапі.