Условный тег is_page с пользовательским типом записи
Согласно документации по is_page, передача слага в качестве аргумента позволяет WordPress определить, является ли текущая страница той, которая представлена этим слагом. Возможно, я использую неправильный слаг? Я пробовал использовать как путь, указанный в аргументе rewrite, так и часть, которую я считаю "слагом" или, другими словами, элемент, используемый при регистрации CPT.
Ниже приведен фрагмент кода для лучшего понимания:
'rewrite' => array( 'slug' => 'faqs/archivio' )
);
register_post_type( 'faqs', $args );
Я попробовал использовать слаг, указанный для пользовательского типа записи, но это не сработало.
Итак, два вопроса:
- Должен ли is_page работать в этом случае?
- Если нет, какая лучшая альтернатива?
Спасибо, Андреа

Создание пользовательского типа записи включает его определение внутри типа записи. Также страница является лишь стандартным типом записи. Если вы регистрируете свой пользовательский тип записи, то проверяйте именно этот тип записи, а не страницу.
Условный тег is_singular
Основное назначение функции, условного тега is_singular()
— проверять, просматривается ли отдельная запись. Однако её также можно использовать для проверки просмотра отдельной записи определённого типа, указав параметр $post_type
, как показано в следующем фрагменте кода.
is_singular( 'ваш_пользовательский_тип_записи' );
или для разных типов записей
is_singular( array( 'ваш_пользовательский_тип_записи_1', 'ваш_пользовательский_тип_записи_2' ) );
Подсказка для отладки
Я использую плагин Debug Objects для отладки вопросов в этом контексте. Возможно, это поможет и вам, часто проще, чем читать код или кодекс. Посмотрите следующий скриншот плагина, результат условных тегов, включая is_page()
и is_single()
на CPT.

Спасибо, я скачаю этот плагин. Не могли бы вы уточнить, где именно опечатка? Похоже, мой CPT работает нормально, поэтому я не понимаю.

Извините... Теперь я понял фразу. Вы написали "a post typo", тогда как должно было быть "a post type". Поэтому я подумал, что это моя опечатка. Кстати, я установил плагин, который больше не в бета-версии. Макет изменился, и я не могу найти вывод моих is_page или is_singular. Полагаю, они находятся в разделе debug_hooks.

Да, это была ошибка с моей стороны, теперь исправлено на "type". Если вы установили плагин, посмотрите настройки, активируйте условную тему. Если вы на стороне, там будет отладка, нажмите на жука в админ-баре или используйте url-параметр, это также задокументировано на странице настроек.

Вы можете сделать так для маршрутизации файла single.php для разных типов записей.
У меня есть два файла single.php с именами single-product.php и single-blogs.php.
Теперь в файле single.php я написал следующий код для перенаправления разных записей на основе типа пользовательской записи:
if (get_post_type('product'))
{
include (TEMPLATEPATH . '/single-product.php');
}
else
{
include (TEMPLATEPATH . '/single-blogs.php');
}
или
if (is_singular('product'))
{
include (TEMPLATEPATH . '/single-product.php');
}
else
{
include (TEMPLATEPATH . '/single-blogs.php');
}
