Когда вы активируете тему 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
Что ж, если все, что вам нужно, это проверить, какой файл шаблона использовался для создания текущей страницы, тогда вам не нужно запачкать руки кодом;)
Этот удобный плагин называется Debug Bar . Это отличный помощник во многих ситуациях, включая вашу. Вы должны обязательно это проверить - для меня и многих других это обязательный компаньон для любой разработки WP.
Я приложил скриншот, который может заставить тебя влюбиться ...
Чтобы панель отладки работала , вам нужно включить wp_debug
и wp_savequeries
опции. Эти параметры по умолчанию отключены.
Прежде чем вносить какие-либо изменения, необходимо помнить следующее:
Чтобы внести изменения:
wp_config.php
файл через FTP-клиент.wp_debug
вариант. Изменить это define( 'WP_DEBUG', true );
. Если строка отсутствует, добавьте ее в файл.define( 'SAVEQUERIES', true );
в файл.Больше информации: Кодекс
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 в тег body. Он добавит несколько классов в зависимости от того, какую страницу вы просматриваете (главная страница, страница за страницей и т. Д.).
Проверьте это здесь: 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 -->
и в верхней части front-page.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 backtrace. Суперглобалы внутри не template_include
соберут их всех . Другой способ - «поместить маркер» в каждом файле шаблона, но если вам нужно сначала взаимодействовать с файлами, вы тратите время и всю идею.
1) Нам нужно проверить все файлы, которые были использованы текущим запросом Wordpress. И их много! Не удивляйтесь, если вы используете 300 файлов до того, как ваш файл functions.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) -replacement , если вы не хотите, чтобы в нее входили подключаемые модули. Они могут вызывать class-files
поздно и «перехватывать» во время обработки вывода шаблона.
Однако я счел разумным оставить их видимыми, поскольку идея состоит в том, чтобы отслеживать загруженное , даже если это не «шаблон», отображающий вывод на этом этапе.