Как вывести шаблон, соответствующий определенной категории?

Как назначить определенный шаблон записи, исходя из выбранной категории, если запись принадлежит нескольким категориям?
  • 2 октября 2023 г. 21:57
Ответы на вопрос 2
1. Для вывода шаблона, соответствующего определенной категории, вы можете использовать функцию `get_template_part()` внутри цикла постов. Вот пример:

```php
<?php
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();

        // Получаем список категорий текущей записи
        $categories = get_the_category();
        
        // Проверяем, принадлежит ли запись нужной категории
        foreach ( $categories as $category ) {
            if ( 'название_категории' === $category->name ) {
                // Выводим шаблон для этой категории
                get_template_part( 'шаблон_категории' );
            }
        }
    }
}
?>
```
Замените `'название_категории'` на имя нужной категории, а `'шаблон_категории'` на имя файла шаблона для этой категории. Например, если у вас есть категория "новости", и вы хотите использовать шаблон `category-news.php`, код будет выглядеть так:

```php
<?php
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();

        $categories = get_the_category();
        
        foreach ( $categories as $category ) {
            if ( 'новости' === $category->name ) {
                get_template_part( 'category-news' );
            }
        }
    }
}
?>
```

2. Если запись принадлежит нескольким категориям, вы можете просто выбрать одну из них для вывода нужного шаблона. Например, можно выбрать первую категорию:

```php
<?php
$categories = get_the_category();
$category = isset( $categories[0] ) ? $categories[0] : false;

if ( $category ) {
    if ( 'название_категории' === $category->name ) {
        // Выводим шаблон для этой категории
        get_template_part( 'шаблон_категории' );
    }
}
?>
```

В этом примере используется функция `get_the_category()` для получения списка категорий текущей записи, а затем выбирается первая категория (если она существует) с помощью `$categories[0]`. Замените `'название_категории'` и `'шаблон_категории'` на соответствующие значения для вашего случая.
1. Опционально назначить шаблон записи, исходя из категории.
2. Шаблон записи может быть выбран автоматически в соответствии с иерархией или вручную при создании записи.
3. Создайте шаблон записи и выберите его.
4. Лучше всего подключить "template part" программно (файл темы).
5. Для этого выберите файл, исходя из условия рубрики (in_category) или кастомной таксономии (has_term), и подключите его с помощью get_template_part.
6. Если нужно программно подключить именно шаблон темы, используйте locate_template вместо get_template_part.
Похожие вопросы