Условный тег is_page с пользовательским типом записи

29 апр. 2014 г., 20:39:07
Просмотры: 9.74K
Голосов: 2

Согласно документации по is_page, передача слага в качестве аргумента позволяет WordPress определить, является ли текущая страница той, которая представлена этим слагом. Возможно, я использую неправильный слаг? Я пробовал использовать как путь, указанный в аргументе rewrite, так и часть, которую я считаю "слагом" или, другими словами, элемент, используемый при регистрации CPT.

Ниже приведен фрагмент кода для лучшего понимания:

'rewrite'               => array( 'slug' => 'faqs/archivio' )
  );

register_post_type( 'faqs', $args );

Я попробовал использовать слаг, указанный для пользовательского типа записи, но это не сработало.

Итак, два вопроса:

  1. Должен ли is_page работать в этом случае?
  2. Если нет, какая лучшая альтернатива?

Спасибо, Андреа

0
Все ответы на вопрос 2
4

Создание пользовательского типа записи включает его определение внутри типа записи. Также страница является лишь стандартным типом записи. Если вы регистрируете свой пользовательский тип записи, то проверяйте именно этот тип записи, а не страницу.

Условный тег is_singular

Основное назначение функции, условного тега is_singular() — проверять, просматривается ли отдельная запись. Однако её также можно использовать для проверки просмотра отдельной записи определённого типа, указав параметр $post_type, как показано в следующем фрагменте кода.

is_singular( 'ваш_пользовательский_тип_записи' );

или для разных типов записей

is_singular( array( 'ваш_пользовательский_тип_записи_1', 'ваш_пользовательский_тип_записи_2' ) );

Подсказка для отладки

Я использую плагин Debug Objects для отладки вопросов в этом контексте. Возможно, это поможет и вам, часто проще, чем читать код или кодекс. Посмотрите следующий скриншот плагина, результат условных тегов, включая is_page() и is_single() на CPT. Результат работы условных тегов is_page() и is_single() на пользовательском типе записи

29 апр. 2014 г. 20:49:09
Комментарии

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

Andrea Moro Andrea Moro
30 апр. 2014 г. 06:40:08

Какую именно опечатку вы имеете в виду?

bueltge bueltge
30 апр. 2014 г. 14:01:15

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

Andrea Moro Andrea Moro
1 мая 2014 г. 06:51:36

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

bueltge bueltge
2 мая 2014 г. 18:41:18
1

Вы можете сделать так для маршрутизации файла 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');
}
10 апр. 2018 г. 10:25:17
Комментарии

Если вы загружаете файлы шаблонов, то лучшей практикой будет использовать get_template_part() вместо include.

Jacob Peattie Jacob Peattie
10 апр. 2018 г. 11:04:12