Что сравнивает is_page_template ()?

Просматривая документацию 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_templatepage-homepage.php – не имя шаблона, как предлагает документация …?

Я делаю что-то неправильно?

Solutions Collecting From Web of "Что сравнивает is_page_template ()?"

Ваше состояние должно быть написано так:

 if (is_page_template('path/file.php')) { // Do stuff } 

Я считаю, что путаница является результатом двух вещей:

  1. Документы ссылаются на «имя» неоднозначно. Указание «имени файла» сделает документацию более понятной.
  2. Код позади 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 как правило, используется для идентификации шаблона при создании страницы или сообщения.