Как создать пользовательские типы записей (CPT) в WordPress с примером кода

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

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

По умолчанию WordPress имеет несколько типов записей: post (записи), page (страницы), attachment (медиафайлы) и др. Однако часто бывает необходимо добавить отдельный тип контента, который логически не вписывается в стандартные записи или страницы. Например, если у вас сайт с каталогом книг, удобно сделать для них отдельный тип записи — «Книга».

Пользовательские типы записей позволяют:

  • Структурировать контент по тематикам.
  • Упростить администрирование сайта для клиентов.
  • Настроить отдельные шаблоны отображения.
  • Использовать свои таксономии (категории, метки) для CPT.

Это существенно расширяет возможности WordPress как CMS.

Регистрация пользовательского типа записи: базовый пример кода

Чтобы создать CPT, нужно использовать функцию register_post_type(). Её следует вызывать в хуке init, чтобы зарегистрировать тип на раннем этапе загрузки WordPress.

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

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array('slug' => 'book'),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
    );

    register_post_type('book', $args);
}
add_action('init', 'wpbook_register_cpt_book');

В этом коде создаётся тип записи с ключом book, который будет отображаться в админке под названием «Книги» с набором стандартных возможностей (заголовок, редактор, миниатюра и т.д.).

Настройка таксономий для CPT: категории и метки

Для удобной классификации записей нового типа стоит добавить пользовательские таксономии аналогично стандартным категориям и меткам. Это делается с помощью функции register_taxonomy().

Пример регистрации таксономии «Жанры» для книги:

function wpbook_register_taxonomy_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' => 'genre'),
    );

    register_taxonomy('genre', array('book'), $args);
}
add_action('init', 'wpbook_register_taxonomy_genre');

После этого в админке у записей типа «Книга» появится метабокс для выбора жанров.

Как вывести записи CPT в шаблоне темы

Для отображения записей CPT на сайте можно использовать класс WP_Query с параметром post_type. Например, чтобы вывести список последних книг, можно добавить следующий код в шаблон:

$args = array(
    'post_type'      => 'book',
    'posts_per_page' => 10,
);

$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 'Книги не найдены';
}

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

Рекомендации по использованию CPT и полезные плагины

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

  • Custom Post Type UI — популярный плагин для создания и управления CPT и таксономиями без кода.
  • Toolset Types — комплексное решение для создания CPT, полей и связей.

Кроме того, для кастомных полей рекомендуется использовать Advanced Custom Fields (ACF), который отлично интегрируется с CPT и упрощает создание сложных интерфейсов ввода данных.

Как зарегистрировать CPT с поддержкой REST API для Gutenberg и внешних приложений

Если вы планируете использовать новый редактор Gutenberg или обращаться к CPT через REST API, обязательно добавьте параметр show_in_rest в true при регистрации типа записи:

'show_in_rest' => true,

Это позволит редактировать записи CPT в Gutenberg и получать их через API, что особенно полезно при разработке SPA или мобильных приложений.

Итог

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

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

⭐⭐⭐⭐⭐
Как автоматически удалять неиспользуемые виджеты в WordPress
09.03.2026
Как удалить записи по автору в WordPress программно
16.01.2026
Как удалить неиспользуемые шорткоды в WordPress: эффективные методы и примеры кода
18.02.2026
Как автоматически удалить старые ревизии записей в WordPress
23.01.2026
Как сделать автоматический rollback обновлений WordPress при ошибках
25.03.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее