Как создать собственный тип записи (Custom Post Type) в WordPress

В WordPress стандартно используются типы записей «Записи» и «Страницы», но для многих проектов этого недостаточно. Создание собственного типа записи (Custom Post Type, CPT) позволяет структурировать контент более гибко и удобно. В этой статье мы подробно разберём, как правильно создать CPT с примерами кода и полезными советами.

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

Собственный тип записи — это дополнительный вид контента, который вы регистрируете в системе. Это может быть портфолио, отзывы, продукты, события или любой другой контент, который не подходит под стандартные «Записи» или «Страницы».

Преимущества CPT:

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

Для начала работы с CPT необязательно использовать плагины, но они могут упростить процесс.

Регистрация собственного типа записи через functions.php

Самый простой и контролируемый способ — добавить код регистрации CPT в файл functions.php вашей темы или в плагин-функции. Рассмотрим пример регистрации типа записи «Отзывы».

function wptalk_register_post_type_reviews() {
    $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,
        'has_archive'        => true,
        'rewrite'            => array('slug' => 'reviews'),
        'show_in_rest'       => true, // для поддержки Gutenberg
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'comments'),
        'menu_icon'          => 'dashicons-testimonial',
    );

    register_post_type('wptalk_review', $args);
}
add_action('init', 'wptalk_register_post_type_reviews');

В этом примере мы создали тип записи с названием wptalk_review. Обратите внимание на show_in_rest — он позволяет использовать блоковый редактор и REST API для вашего CPT.

Подробности параметров

Параметры register_post_type очень гибкие. Например, можно управлять видимостью типа записи в админке, возможностями поиска, поддержкой таксономий и многое другое. Подробнее можно посмотреть в официальной документации WordPress.

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

Чтобы структурировать ваш кастомный тип записи, полезно добавить собственные таксономии (категории или метки). Например, для отзывов можно добавить таксономию «Тип отзыва».

function wptalk_register_taxonomy_review_type() {
    $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-type'),
        'show_in_rest'      => true,
    );

    register_taxonomy('wptalk_review_type', array('wptalk_review'), $args);
}
add_action('init', 'wptalk_register_taxonomy_review_type');

Теперь у отзывов появится возможность классифицировать их по типу — это удобно для фильтрации и вывода на фронтенде.

Использование плагинов для создания CPT

Если вы не хотите писать код, есть несколько отличных плагинов:

  • Custom Post Type UI — самый популярный и удобный плагин для создания CPT и таксономий через интерфейс.
  • Pods — расширенный инструмент для создания CPT, таксономий и метаполей с возможностью кастомизации.
  • WPCPT — лёгкий плагин с минималистичным интерфейсом.

Например, Custom Post Type UI позволяет создать CPT за несколько кликов, а потом экспортировать настройки в PHP-код, чтобы использовать их в теме или плагине.

Вывод Custom Post Type на сайте: примеры кода шаблонов

После создания CPT нужно вывести записи на сайте. Можно использовать стандартный цикл WordPress или WP_Query.

$args = array(
    'post_type' => 'wptalk_review',
    'posts_per_page' => 10,
);
$wptalk_reviews = new WP_Query($args);
if ($wptalk_reviews->have_posts()) {
    while ($wptalk_reviews->have_posts()) {
        $wptalk_reviews->the_post();
        echo '<h2>' . get_the_title() . '</h2>';
        echo '<div>' . get_the_content() . '</div>';
    }
    wp_reset_postdata();
} else {
    echo 'Отзывы не найдены.';
}

Этот код можно вставить в любой шаблон темы, например, в файл archive-wptalk_review.php для архива или в кастомную страницу.

Подключение метаполей к CPT

Для расширения функционала отзывов полезно добавить метаполя — например, рейтинг или имя клиента. Для этого можно использовать плагин Advanced Custom Fields или написать свой код с использованием add_meta_box.

Оптимизация и лучшие практики при работе с CPT

При создании CPT важно учитывать:

  • Уникальный slug — чтобы не конфликтовать с другими типами записей;
  • Поддержка REST API — для совместимости с редактором Gutenberg и внешними приложениями;
  • Использование префикса в названиях функций и типов, чтобы избежать конфликтов (например, wptalk_);
  • Добавление поддержки необходимых возможностей через supports;
  • Создание шаблонов в теме для правильного отображения CPT;
  • Регулярное тестирование на конфликт плагинов и тем.

Использование WPGPT и других плагинов WPShop для CPT

Если вы хотите автоматизировать создание и наполнение CPT, обратите внимание на плагин WPGPT. Он позволяет генерировать контент с помощью GPT, что удобно для создания описаний или отзывов.

Также для управления отображением CPT можно использовать ABC Pagination для удобной постраничной навигации.

Вывод

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

Как изменить URL авторского блога в WordPress
29.03.2026
Как создать многоуровневую пагинацию в WordPress с поддержкой AJAX
04.01.2026
Как решить проблему рассинхронизации остатков товаров в WooCommerce при использовании метаполей
26.04.2026
Как добавить автоматическую настройку изображений в WordPress для ускорения сайта
06.03.2026
Как избежать проблем с кэшированием в WordPress: практические советы
01.03.2026