Просматривая документацию Wordpress , он говорит, что is_page_template()
сравнивается с «именем шаблона», если оно есть.
У меня есть шаблон, хранящийся в page-homepage.php
под названием Homepage
:
/*
* Template Name: Homepage
* Description: The template for displaying the homepage
*/
И у меня есть код, который я хочу запустить в своем functions.php, когда я использую этот шаблон:
if (is_page_template('Homepage')) {
...
Но это не срабатывает, когда я нахожусь на странице, которая использует этот шаблон.
Когда я смотрю на код, для которого выполняется Wordpress is_page_template()
, похоже, что он на самом деле проверяет имя документа, а не имя шаблона ...?
function is_page_template( $template = '' ) {
$page_template = get_page_template_slug( get_queried_object_id() );
if ( $template == $page_template )
return true;
В моем случае кажется, что $page_template
это page-homepage.php
- не имя шаблона, как предполагает документация ...?
Я делаю что-то неправильно?
page-template
codex
Джанго Рейнхардт
источник
источник
Ответы:
Ваше состояние должно быть написано так:
Я считаю, что путаница является результатом двух вещей:
is_page_template()
показываетget_page_template_slug()
функцию в ее ядре. Эта функция на самом деле возвращает имя файла, а не шаблонный слаг. https://codex.wordpress.org/Function_Reference/get_page_template_slugПри указании аргумента для
is_page_template()
функции (как в примере выше) путь к файлу указывается относительно корня темы.Эта функция не будет работать внутри цикла.
источник
get_page_template_slug()
самом деле не возвращает слизняк!Я думаю, что лучше всего сказать, он проверяет имя ФАЙЛА, и в вашем случае это будет page-homepage.php. так:
Другие вещи, о которых стоит подумать, это если файл шаблона действительно хранится в другой папке внутри темы. прочитайте больше
Еще одна вещь, в
Template Name: Homepage
общем, то, что используется для идентификации шаблона при создании страницы или публикации.источник
page-templates/page-homepage.php
отличается от шаблона в корне темы.