Как узнать, какая страница шаблона служит для текущей страницы?

Когда вы активируете тему wordpress, всегда сложно найти, какой файл нужно менять для изменения. Любая идея, как упростить вещи?

Но с другой стороны, учитывая функциональность get_template_part, это может быть невозможно. Что вы скажете?

46 голосов | спросил Average Joe 25 SunEurope/Moscow2011-12-25T00:32:48+04:00Europe/Moscow12bEurope/MoscowSun, 25 Dec 2011 00:32:48 +0400 2011, 00:32:48

9 ответов


29

Подключитесь к template_include, установите глобальное значение, чтобы отметить шаблон, заданный темой, затем прочитайте это значение обратно в нижний колонтитул или заголовок, чтобы увидеть, какой шаблон вызывается для данного представления.

Я говорил об этом методе фильтра раньше, чем в Получить имя текущего файл шаблона , но перейдите в копию этого кода и назовите функции вашей темы .php.

Затем откройте тег header.php или footer.php (или где хотите) и для распечатки текущего шаблона используйте примерно следующее:

<div> <strong> Текущий шаблон: </strong> <? php get_current_template (true); ? > & Lt; /дел >

Если вы хотите использовать это на производственном сайте и хранить эту информацию у своих пользователей, не являющихся администраторами, добавьте небольшую условную логику.

& л;? PHP
//Если текущий пользователь может управлять параметрами (например, администратором)
if (current_user_can ('manage_options'))
    //Печать сохраненного глобального
    printf ('<div> <strong> Текущий шаблон: </strong>% s </div & gt ;, get_current_template ());
? >

Теперь вы можете отслеживать, какие представления используют какой шаблон, сохраняя эту информацию далеко от ваших посетителей.

ответил t31os 26 MonEurope/Moscow2011-12-26T16:57:16+04:00Europe/Moscow12bEurope/MoscowMon, 26 Dec 2011 16:57:16 +0400 2011, 16:57:16
31

Ну, если все, что вы хотите, это проверить, какой файл шаблона использовался для создания текущей страницы, вам не нужно замарать руки кодом;)

Этот удобный плагин называется панель отладки . Это отличный помощник во многих ситуациях, включая ваши. Вы должны обязательно проверить это - для меня и многих других это обязательный помощник для любой разработки WP.

Я прикрепил скриншот, который может заставить вас влюбиться ...

введите описание изображения здесь>> </p>

<p> Чтобы получить панель Debug <strong> </strong>, вам нужно включить опции <code>wp_debug</code> и <code>wp_savequeries</code>. По умолчанию эти параметры отключены. </p>

<p> Прежде чем делать какие-либо изменения, нужно помнить несколько моментов: </p>

<ul>
<li> Не делайте этого в производственной среде, если веб-сайт не обслуживает много трафика. </li>
<li> После завершения отладки убедитесь, что <b> отключить </b> параметры (особенно параметр wp_savequeries, поскольку это влияет на производительность) веб-сайта. </li>
</ul>
<p> Чтобы внести изменения: </p>

<ol>
<li> Откройте файл <code>wp_config.php</code> через ftp-клиент. </li>
<li> Найдите <code>wp_debug</code>. Отредактируйте его до <code>define ('WP_DEBUG', true);</code>. Если строка отсутствует, добавьте ее в файл. </li>
<li> Аналогичным образом отредактируйте или добавьте строку <code>define ('SAVEQUERIES', true),</code> в файл. </li>
<li> Сохранить. Вы готовы отлаживать. </li>
</ol>
<p> Дополнительная информация: <a href= Codex

ответил Michal Mau 26 MonEurope/Moscow2011-12-26T22:16:25+04:00Europe/Moscow12bEurope/MoscowMon, 26 Dec 2011 22:16:25 +0400 2011, 22:16:25
12

Добавьте следующий код сразу после строки get_header в каждом соответствующем файле шаблона:

<! - <? php echo basename (__FILE__); ? > - >

В вашем браузере> просмотреть источник, а имя шаблона будет отображаться как комментарий в вашем html-коде, например.

<! - page.php ->
ответил ronald 27 TueEurope/Moscow2011-12-27T22:32:43+04:00Europe/Moscow12bEurope/MoscowTue, 27 Dec 2011 22:32:43 +0400 2011, 22:32:43
11

Я использую эту удобную функцию, которая отображает текущий шаблон только для супер админов:

function show_template () {
    if (is_super_admin ()) {
        глобальный шаблон $;
        print_r ($ шаблон);
    }
}
add_action ('wp_footer', 'show_template');

Надеюсь, что это поможет. :)

ответил mightypixel 23 Jpm1000000pmThu, 23 Jan 2014 17:06:41 +040014 2014, 17:06:41
4

Самый простой способ, который я нашел, - включить функцию WordPress в тег body. Он добавит несколько классов в зависимости от того, какую страницу вы просматриваете (дома для фронта, страницы для страницы и т. Д.).

Посмотрите здесь: http://codex.wordpress.org/Function_Reference/body_class

Кроме того, это полезно для таргетинга элементов с CSS на эти страницы.

Знакомство с иерархией шаблонов (http://codex.wordpress.org/Template_Hierarchy), о которой говорил David R, также является хорошей идеей.

ответил CookiesForDevo 25 SunEurope/Moscow2011-12-25T16:51:51+04:00Europe/Moscow12bEurope/MoscowSun, 25 Dec 2011 16:51:51 +0400 2011, 16:51:51
4

Для этой цели есть еще один плагин с голыми костями. Я склоняюсь к установке панели отладки, потому что эти другие функции выглядят полезными, но это более основательно и специально для этой цели: http://wordpress.org/extend/plugins/what-the-file/

ответил Julian K 29 Jam1000000amTue, 29 Jan 2013 08:22:00 +040013 2013, 08:22:00
3

Одна очень простая вещь - вставить комментарий HTML, идентифицирующий файл шаблона в каждом соответствующем файле темы, например, вверху index.php. У меня есть

<! - index ->

и в верхней части front-page.php

<! - front ->

Но, очевидно, это требует изменения темы. Я подозреваю, что вы можете добавить пользовательскую функцию в файл footer.php или header.php, который расскажет вам, какой файл использовался. Вышеуказанный метод и эталонная диаграмма http://codex.wordpress.org/Template_Hierarchy - это то, к чему я склонен использовать.

ответил 25 SunEurope/Moscow2011-12-25T00:40:49+04:00Europe/Moscow12bEurope/MoscowSun, 25 Dec 2011 00:40:49 +0400 2011, 00:40:49
3

Существует плагин с именем Проверка темы , который делает именно это. Он отображает имя текущего файла шаблона, используемого в качестве комментария HTML.

ответил navjotjsingh 27 TueEurope/Moscow2011-12-27T00:31:04+04:00Europe/Moscow12bEurope/MoscowTue, 27 Dec 2011 00:31:04 +0400 2011, 00:31:04
3

Здесь вы найдете:

HTML-список с файлами шаблонов all , которые используются для текущей целевой страницы, , включая все части шаблона из плагинов, дочерние темы и /или комбинации родительских тем все в одной строке кода:

echo '<ul> <li>'. implode ('</li> <li & gt ;, 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, но до того, как панель администратора отобразит .

, если bar-bar stuff показывает вверху или любой другой файл, измените имя файла template-loader.php в этой строке кода на: filname, с которым вам нужно выйти. Часто: class-wp-admin-bar.php

, если вам нужно это в панели администратора, используйте правильную priotity (самая ранняя) , чтобы сделать shure файлов в конце этого списка. Например:

add_action ('admin_bar_menu', 'my_adminbar_template_monitor', -5);

priority -5 сделать shure, который загружает в первую очередь. Ключ состоит в вызове 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 () должен содержать только файлы шаблонов.

/* Волшебная точка, нам нужно найти ее позицию в массиве * /
$ path = str_replace ('\\', '/', ABSPATH);
$ key = $ path.'wp-includes /template-loader.php ';
$ offset = array_search ($ key, $ included_files);

/* Избавьтесь от самой магической точки в новом созданном массиве * /
$ 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> ;

Может потребоваться последняя модификация в части 3) -replacement , если вы dont хотите включить в плагины. Они могут вызывать class-files поздно и «перехватывать» во время обработки вывода шаблона.

Однако я счел разумным оставить их видимыми, поскольку идея состоит в том, чтобы отслеживать загруженные файлы , даже если это не «шаблон», который выводит вывод на этом этапе.

ответил Jonas Lundman 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 15 Sep 2017 09:14:10 +0300 2017, 09:14:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132