Просматривая документацию WordPress , он говорит, что is_page_template()
сравнивается с «именем шаблона», если он 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
– не имя шаблона, как предлагает документация …?
Я делаю что-то неправильно?
Ваше состояние должно быть написано так:
if (is_page_template('path/file.php')) { // Do stuff }
Я считаю, что путаница является результатом двух вещей:
is_page_template()
показывает get_page_template_slug()
по своему ядру. Эта функция фактически возвращает имя файла, а не шаблон. https://codex.wordpress.org/Function_Reference/get_page_template_slug При указании аргумента для функции is_page_template()
(как в примере выше) путь к файлу относится к корню темы.
Эта функция не будет работать внутри цикла.
Я думаю, что лучше всего сказать, что он проверяет имя FILE, и в вашем случае это будет page-homepage.php. так:
if (is_page_template('page-homepage.php')) { ...
Другие вещи, о которых нужно подумать, это если файл шаблона фактически хранится в другой папке внутри темы. прочитайте больше
Еще одна вещь, имя Template Name: Homepage
как правило, используется для идентификации шаблона при создании страницы или сообщения.