Коли ви активуєте тему Wordpress, завжди виникає клопот, щоб дізнатися, в який файл перейти, щоб змінити речі. Будь-яка ідея, як спростити речі?
Але з іншого боку, враховуючи функціональність get_template_part, це може бути неможливим. Що ти сказав?
Коли ви активуєте тему Wordpress, завжди виникає клопот, щоб дізнатися, в який файл перейти, щоб змінити речі. Будь-яка ідея, як спростити речі?
Але з іншого боку, враховуючи функціональність get_template_part, це може бути неможливим. Що ти сказав?
Відповіді:
Підключіться template_include, встановіть глобальний, щоб відзначити шаблон, встановлений темою, а потім прочитайте це значення назад у нижньому колонтитулі чи заголовку, щоб побачити, який шаблон викликається для заданого перегляду.
Раніше я говорив про цей гак фільтрів у розділі Отримати ім’я поточного файлу шаблону , але перейдіть на копію цього коду та розгорніть його у functions.phpфайлі вашої теми .
Потім відкрийте тему header.phpабо footer.php(або де завгодно) та використовуйте щось подібне до наступного, щоб роздрукувати поточний шаблон.
<div><strong>Current template:</strong> <?php get_current_template( true ); ?></div>
Якщо ви хотіли використовувати це на виробничому сайті і тримати цю інформацію подалі від користувачів, які не є адміністраторами, додайте трохи умовної логіки.
<?php
// If the current user can manage options(ie. an admin)
if( current_user_can( 'manage_options' ) )
// Print the saved global
printf( '<div><strong>Current template:</strong> %s</div>', get_current_template() );
?>
Тепер ви можете відслідковувати, які погляди використовують шаблон, при цьому тримаючи цю інформацію подалі від відвідувачів.
get_page_template
Ну, якщо все, що вам потрібно, це перевірити, який файл шаблону був використаний для генерації поточної сторінки, то вам не потрібно забруднити руки кодом;)
Є цей зручний плагін під назвою Bar Debug Bar . Це чудовий помічник у багатьох ситуаціях, включаючи вашу. Ви обов'язково повинні це перевірити - для мене та багатьох інших це обов'язковий супутник для будь-якої розробки WP.
Я додав скріншот, завдяки якому можна закохатись ...

Щоб отримати Debug Bar працювати , Вам необхідно включити wp_debugі wp_savequeriesопції. Ці параметри за замовчуванням знаходяться у відключеному стані.
Перш ніж внести будь-які зміни, пам’ятайте про кілька моментів:
Щоб внести зміни:
wp_config.phpфайл через ftp-клієнт.wp_debugваріанту. Відредагуйте його в define( 'WP_DEBUG', true );. Якщо рядка немає, додайте його у файл.define( 'SAVEQUERIES', true );у файл.Більше інформації: Codex
WP_DEBUG і SAVEQUERIESхоча він покращений ними.
Я використовую цю зручну функцію, яка відображає поточний шаблон лише для супер-адміністраторів:
function show_template() {
if( is_super_admin() ){
global $template;
print_r($template);
}
}
add_action('wp_footer', 'show_template');
Сподіваюся, що це допомагає. :)
Додайте наступний код відразу після рядка get_header у кожному відповідному файлі шаблону:
<!-- <?php echo basename( __FILE__ ); ?> -->
У вашому браузері> джерело перегляду, а назва шаблону відображатиметься як коментар у вашому HTML-коді, наприклад
<!-- page.php -->
Найпростіший спосіб, який я знайшов, - це включити функцію WordPress на тег тіла. Він додасть кілька класів залежно від того, яку сторінку ви переглядаєте (домашня сторінка для передньої сторінки, сторінка для сторінки тощо).
Перевірте це тут: http://codex.wordpress.org/Function_Reference/body_class
Плюс це корисно для націлювання елементів за допомогою CSS на цих сторінках.
Знайомство з Ієрархією шаблонів (http://codex.wordpress.org/Template_Hierarchy), як згадував Давид Р, також є хорошою ідеєю.
Для цього є ще один плагін з голими кістками. Я схиляюся до встановлення налагоджувальної панелі, тому що інші функції виглядають корисними, але ця є більш базовою і спеціально для цієї мети: http://wordpress.org/extend/plugins/what-the-file/
Я дуже просту річ - вставити коментар HTML, що ідентифікує файл шаблону, у кожен відповідний файл теми, наприклад у верхній частині index.php у мене
<!-- index -->
і вгорі передньої сторінки.php
<!-- front -->
Але очевидно, що це потребує модифікації теми. Я підозрюю, що ви можете додати спеціальну функцію у файл footer.php або header.php, який би сказав вам, який файл використовується. Наведений вище метод та довідкова діаграма http://codex.wordpress.org/Template_Hierarchy - це те, що я, як правило, використовую.
Існує плагін під назвою Theme Check, який робить саме це. Він відображає ім'я поточного файлу шаблону, який використовується як коментар HTML.
Ось вам:
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пізно і "перехоплювати" під час обробки виводу шаблону.
Однак я вважав розумним залишати їх видимими, оскільки ідея полягає у тому, щоб відслідковувати завантажені , навіть якщо це не "шаблон", який надає вихід на цьому етапі.