Как создать и использовать кастомные типы записей в WordPress

Кастомные типы записей (Custom Post Types) в WordPress позволяют расширить стандартную функциональность CMS, добавляя новые типы контента, отличные от обычных записей и страниц. Это удобно для сайтов с уникальной структурой данных, например, портфолио, отзывы, товары, события и многое другое.

Что такое кастомные типы записей и зачем они нужны

По умолчанию WordPress поддерживает два основных типа контента: записи (posts) и страницы (pages). Однако эти типы не всегда подходят для всех задач. Кастомные типы записей позволяют создавать новые объекты контента, которые могут иметь собственные поля, таксономии и поведение. Это помогает сделать сайт более структурированным и удобным для пользователей.

Например, если вы создаёте сайт с обзорами книг, то логично создать отдельный тип записи book_review, чтобы отделить обзоры от обычных записей блога.

Как зарегистрировать кастомный тип записи в WordPress

Для добавления нового типа записи используется функция register_post_type(). Обычно её вызывают в хуке init. Рассмотрим пример регистрации типа записи «Отзывы» с слагом review.

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

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'rewrite'            => array('slug' => 'reviews'),
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'comments'),
        'show_in_rest'       => true,
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-testimonial'
    );

    register_post_type('review', $args);
}
add_action('init', 'wp0_register_custom_post_type_review');

После добавления этого кода в файл functions.php вашей темы или в отдельный плагин, в админке появится новый пункт меню «Отзывы» с возможностью добавлять, редактировать и удалять записи этого типа.

Добавление кастомных таксономий к типу записи

Чтобы упорядочить кастомные записи, часто используют собственные таксономии (например, категории и теги). Для этого применяется функция register_taxonomy(). Рассмотрим пример создания таксономии «Жанры» для отзывов.

function wp0_register_taxonomy_review_genre() {
    $labels = array(
        'name'              => 'Жанры',
        'singular_name'     => 'Жанр',
        'search_items'      => 'Искать жанры',
        'all_items'         => 'Все жанры',
        'edit_item'         => 'Редактировать жанр',
        'update_item'       => 'Обновить жанр',
        'add_new_item'      => 'Добавить новый жанр',
        'new_item_name'     => 'Название нового жанра',
        'menu_name'         => 'Жанры'
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array('slug' => 'review-genre'),
        'show_in_rest'      => true
    );

    register_taxonomy('review_genre', array('review'), $args);
}
add_action('init', 'wp0_register_taxonomy_review_genre');

Теперь при создании отзыва можно будет выбрать жанр или добавить новый. Это значительно облегчает навигацию и фильтрацию по типу записи.

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

Чтобы выводить кастомные записи на сайте, нужно создать соответствующие шаблоны. WordPress автоматически ищет шаблон по имени single-{post_type}.php для одиночной записи и archive-{post_type}.php для архива.

Например, создадим файл single-review.php в папке темы:

<?php get_header(); ?>

<?php
if (have_posts()) :
    while (have_posts()) : the_post(); ?>

        <h1><?php the_title(); ?></h1>
        <div class="review-content"><?php the_content(); ?></div>
        <p>Автор: <?php the_author(); ?></p>

    <?php endwhile;
endif;
?>

<?php get_footer(); ?>

Для архива отзывов создайте archive-review.php и используйте стандартный цикл WordPress, чтобы вывести список всех отзывов с пагинацией.

Пример расширения функционала с помощью плагина

Если вы не хотите писать код вручную, можно использовать плагин Custom Post Type UI. Он позволяет создавать кастомные типы записей и таксономии через удобный интерфейс. Однако ручное создание даёт больше контроля и позволяет настроить все параметры под свои нужды.

Для дополнительной оптимизации и настройки можно использовать плагин Clearfy Pro, который помогает отключать лишние функции и управлять производительностью WordPress.

Советы по работе с кастомными типами записей

  • Используйте префиксы в именах функций и слагов — это поможет избежать конфликтов с другими плагинами и темами. В нашем примере префикс wp0_.
  • Не забывайте о поддержке REST API, если планируете использовать API для взаимодействия с сайтом или создавать фронтенд на JS-фреймворках.
  • Добавляйте мета-поля и кастомные поля, чтобы расширить функциональность ваших типов записей. Для этого можно использовать плагины Advanced Custom Fields или писать собственные решения.
  • Оптимизируйте запросы WP_Query при выводе кастомных записей, особенно если их много. Используйте кэширование и лимитируйте выборку.

Пример WP_Query для вывода отзывов по жанру

$args = array(
    'post_type'      => 'review',
    'posts_per_page' => 10,
    'tax_query'      => array(
        array(
            'taxonomy' => 'review_genre',
            'field'    => 'slug',
            'terms'    => 'fantasy',
        ),
    ),
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        echo '<h2>' . get_the_title() . '</h2>';
        the_excerpt();
    }
    wp_reset_postdata();
} else {
    echo 'Отзывов в жанре "Фэнтези" не найдено.';
}

Этот код можно поместить в шаблон или в шорткод, чтобы вывести отзывы только определённого жанра.

Заключение

Кастомные типы записей — мощный инструмент для создания сложных и структурированных сайтов на WordPress. Они позволяют организовать контент по своим правилам и сделать сайт удобным для админов и пользователей. Ручное создание с помощью register_post_type() и register_taxonomy() даёт максимум гибкости и контроля. Не забывайте использовать префиксы и оптимизировать запросы для лучшей производительности.

Как удалить неиспользуемые плагины в WordPress без ошибок
02.10.2026
Как удалить неиспользуемые таблицы из базы WordPress без рисков
02.10.2026
Как использовать WP-Cron для автоматизации задач в WordPress
02.10.2026
Как создать собственный шорткод в WordPress
02.10.2026
Как запретить индексацию определённых страниц WordPress с помощью robots.txt и мета-тегов
02.10.2026

Мы занимаемся разработкой приложений и плагинов для WordPress. Ниже предлагаем ознакомиться с ними.