Условный тег для проверки использования 'page.php'?
Я пытаюсь проверить, используется ли шаблон page.php или нет. Я пробовал is_page_template( 'page.php' )
, но это не работает.
Также я не могу использовать is_page()
, потому что мне нужно выполнить действие только при использовании page.php
, а не других пользовательских шаблонов страниц.
Пожалуйста, подскажите решение, спасибо!
Редактирование: Следовало упомянуть ранее, что у меня есть файл common-options.php
, который подключается почти во всех шаблонах (таких как index.php
, page.php
, single.php
и page_blog.php
). В этом файле я пытаюсь выполнить проверку следующим кодом:
if ( is_page_template( 'page.php' ) ) {
echo "успех!";
}
Но это не работает, когда я открываю страницу, использующую "Шаблон по умолчанию".

Я сам столкнулся с такой же проблемой, и моим решением стал этот код:
if(basename(get_page_template()) === 'page.php'){
}
basename(get_page_template())
получает имя файла шаблона страницы (согласно https://codex.wordpress.org/Function_Reference/get_page_template), а затем мы проверяем, равно ли оно 'page.php'

Не могли бы вы подробнее объяснить, как будет работать этот код?

По крайней мере у меня это возвращает true для любой страницы, даже если используется пользовательский шаблон (отличный от page.php)

Это потрясающе, потому что работает даже если страница использует свой шаблон по умолчанию.

У вас есть две полезные функции: is_page()
и is_page_template()
.
Функция is_page()
возвращает true
, если вы находитесь на странице, а функция is_page_template()
возвращает false
, если текущая запись (может быть страницей) не использует пользовательский шаблон.
Таким образом, вам просто нужно использовать обе эти функции вместе:
if ( is_page() && !is_page_template() ) {
// ваш код
}

Старый вопрос, но интересный.
В целом, в WordPress не принято проверять шаблон. Шаблон — это результат выполнения основного запроса и настройки контекста запроса.
При необходимости я бы, вероятно, установил какой-нибудь флаг в начале page.php
, например, объявил константу, чтобы иметь собственный контекст для этого.
Однако в целом это заставляет задуматься, что любую логику, требующую такого подхода, стоит пересмотреть в соответствии с более стандартными механизмами и условными конструкциями.

+1 Любой код, требующий этого условия, вероятно, может быть просто безусловно размещен в page.php

Это работает для меня в файле searchbar.php
basename(get_page_template()) === ( 'page.php' )
Вот мой полный код:
if ( is_page_template( 'tpl-ads-home.php' ) || basename(get_page_template()) === ( 'page.php' ) || is_page_template( 'tpl-refine-search.php' ) || is_page_template( 'tpl-categories.php' ) || is_search() || is_404() || is_tax( APP_TAX_CAT ) || is_tax( APP_TAX_TAG ) || is_singular( APP_POST_TYPE ) ) :
$args = cp_get_dropdown_categories_search_args( 'bar' );

Полный код
<?php if ( is_page_template( 'tpl-ads-home.php' ) || basename(get_page_template()) === ( 'page.php' ) || is_page_template( 'tpl-refine-search.php' ) || is_page_template( 'tpl-categories.php' ) || is_search() || is_404() || is_tax( APP_TAX_CAT ) || is_tax( APP_TAX_TAG ) || is_singular( APP_POST_TYPE ) ) :
$args = cp_get_dropdown_categories_search_args( 'bar' ); ?>
