Как использовать Custom Post Types и таксономии для категорий в WordPress

В WordPress по умолчанию есть стандартные типы записей — посты и страницы, а также категории и метки. Но часто стандартных возможностей недостаточно, особенно если вы хотите вывести контент нестандартным образом или сделать сложную структуру категорий. В этом случае на помощь приходят кастомные типы записей (Custom Post Types, CPT) и кастомные таксономии (Custom Taxonomies).

Что такое Custom Post Types и зачем они нужны

Кастомные типы записей — это способ расширить стандартный функционал WordPress, добавив новые типы контента, которые можно структурировать и выводить отдельно от обычных постов. Например, у вас может быть сайт с курсами, где курсы — это отдельный тип записи, а не просто посты блога.

Использование CPT позволяет:

  • Разделять контент по смыслу и назначению;
  • Настраивать индивидуальные шаблоны для отображения;
  • Управлять записями отдельно от стандартных постов;
  • Использовать кастомные таксономии для классификации.

Кастомные таксономии для гибкой категоризации

Таксономии — это способ группировки записей. В WordPress есть две стандартные таксономии: категории и метки. Но с CPT часто нужны новые, более точные таксономии, например, для курсов это может быть уровень сложности, тип курса или тематика.

Создавая свои таксономии, вы получаете:

  • Удобную фильтрацию контента;
  • Возможность создавать вложенные категории или иерархии;
  • Улучшенную навигацию для пользователей;
  • Гибкие настройки отображения.

Пример создания Custom Post Type и таксономии через код

Рассмотрим, как в вашем functions.php темы добавить кастомный тип записи "Курсы" и таксономию "Тематика".

function wpcourse_register_post_type_and_taxonomy() {
    // Регистрируем CPT Courses
    $labels = array(
        'name' => 'Курсы',
        'singular_name' => 'Курс',
        'add_new' => 'Добавить курс',
        'add_new_item' => 'Добавить новый курс',
        'edit_item' => 'Редактировать курс',
        'new_item' => 'Новый курс',
        'view_item' => 'Просмотреть курс',
        'search_items' => 'Поиск курсов',
        'not_found' => 'Курсы не найдены',
        'not_found_in_trash' => 'В корзине курсы не найдены',
        'menu_name' => 'Курсы'
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'courses'),
        'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'),
        'show_in_rest' => true,
    );
    register_post_type('wpcourse_course', $args);

    // Регистрируем таксономию Тематика для CPT Courses
    $taxonomy_labels = array(
        'name' => 'Тематики',
        'singular_name' => 'Тематика',
        'search_items' => 'Искать тематики',
        'all_items' => 'Все тематики',
        'edit_item' => 'Редактировать тематику',
        'update_item' => 'Обновить тематику',
        'add_new_item' => 'Добавить новую тематику',
        'new_item_name' => 'Новое имя тематики',
        'menu_name' => 'Тематики'
    );

    $taxonomy_args = array(
        'labels' => $taxonomy_labels,
        'hierarchical' => true,
        'show_ui' => true,
        'show_admin_column' => true,
        'rewrite' => array('slug' => 'course-topic'),
        'show_in_rest' => true,
    );
    register_taxonomy('wpcourse_topic', 'wpcourse_course', $taxonomy_args);
}
add_action('init', 'wpcourse_register_post_type_and_taxonomy');

Этот код создаёт новый тип записи wpcourse_course и таксономию wpcourse_topic для удобной категоризации курсов.

Вывод кастомных типов записей и таксономий в шаблонах

Чтобы вывести список курсов с их тематикой, используйте WP_Query с параметрами по CPT и таксономии. Пример шаблона, который выводит курсы с тематиками:

$args = array(
    'post_type' => 'wpcourse_course',
    'posts_per_page' => 10,
    'tax_query' => array(
        array(
            'taxonomy' => 'wpcourse_topic',
            'field' => 'slug',
            'terms' => 'frontend'
        ),
    ),
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    echo '<ul>';
    while ($query->have_posts()) {
        $query->the_post();
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
    wp_reset_postdata();
} else {
    echo 'Курсы не найдены';
}

Такой вывод позволит фильтровать курсы по выбранной тематике, например по slug «frontend».

Рекомендации по плагинам для работы с CPT и таксономиями

Если вы предпочитаете не писать код, есть несколько удобных плагинов для создания кастомных типов записей и таксономий:

  • Custom Post Type UI — простой графический интерфейс для регистрации CPT и таксономий.
  • Toolset Types — мощный плагин для создания и управления типами записей, полями и таксономиями.
  • Clearfy Pro — оптимизирует работу сайта и может помочь с управлением CPT и таксономиями.

Лучшие практики работы с кастомными типами записей и таксономиями

При работе с CPT и таксономиями важно следовать нескольким правилам:

  • Используйте уникальные префиксы в названиях функций и идентификаторов, чтобы избежать конфликтов с другими плагинами или темами.
  • Регистрация CPT и таксономий должна происходить на хуке init, чтобы WordPress корректно их распознал.
  • Обязательно включайте поддержку REST API ('show_in_rest' => true), если планируете работать с Gutenberg или создавать SPA на базе WordPress.
  • Разрабатывайте удобные шаблоны для отображения CPT, учитывая пользовательский опыт и SEO.

Использование кастомных типов записей и таксономий — мощный инструмент для создания сложных и структурированных сайтов на WordPress. Благодаря им можно легко разделять контент, улучшать навигацию и создавать уникальные пользовательские интерфейсы без излишнего нагромождения стандартных функций.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать REST API в WordPress для создания кастомных эндпоинтов
21.11.2025
Как удалить таблицу из базы данных WordPress без плагинов: практическое руководство
09.12.2025
WooCommerce: как установить лимит на количество товаров в корзине
26.04.2026
Как использовать WP_Query для кругового вывода листингов в WordPress
19.12.2025
WooCommerce: как автоматически удалять товар из корзины при обновлении количества
05.06.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее