Индивидуальный шаблон single.php для разных категорий wordpress
WordPress предусматривает индивидуальные шаблоны для отдельных постов, просто создав single-{id,slug}, однако, иногда необходимо, чтобы уникальный шаблон был для всех постов внутри определенной категории. Например, для вывода детальной новости — шаблон один, а для детальной записи в блоге — шаблон другой. Можно для каждой записи дублировать шаблон single-{id,slug}, но есть более удобное решение.
Для того, чтобы задать индивидуальный шаблон постов внутри определенной категории — необходимо править файл functions.php внутри вашей темы. Добавим следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 | add_filter('single_template', 'my_single_template'); function my_single_template($single) { global $wp_query, $post; foreach((array)get_the_category() as $cat) { if(file_exists(get_template_directory() . '/single-' . $cat->slug . '.php')) { return get_template_directory() . '/single-' . $cat->slug . '.php'; } elseif(file_exists('/single-' . $cat->term_id . '.php')) { return get_template_directory() . '/single-' . $cat->term_id . '.php'; } } return $single; } |
Данный код перед обращением к файлу single.php для генерации страницы пытается найти файлы single-{slug,term_id}, где slug и term_id — алиас категории или её идентификатор.
Например, у нас есть рубрика «Комнаты» с алиасом rooms, создадим single-rooms.php файл и теперь все записи внутри рубрики «Комнаты» будут выводиться по шаблону файла single-rooms.php.
Комментарии к Индивидуальный шаблон single.php для разных категорий wordpress (2)
Одежда и обувь интернет-магази
Благодарю! Очень пригодилась Ваша статья. Долго искала решение, пробовала плагины, но они конфликтовали, а здесь простое и удобное решение и без использования плагинов. Большое спасибо!
Pashka Ru
после последнего обновления вордпресса перестало работать. Теперь надо вручную у каждой записи указывать шаблон.