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

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

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

Стандартные типы записей в WordPress — это posts (записи) и pages (страницы). Но если вы создаёте, например, каталог товаров, портфолио, отзывы или мероприятия, классические записи неудобны для этих задач. Создание CPT позволяет:

  • Разделить контент по логическим блокам и типам;
  • Настроить отдельные поля и таксономии для каждого типа;
  • Облегчить вывод кастомного контента с помощью шаблонов и запросов WP_Query;
  • Упорядочить админ-панель для удобства редакторов.

Иными словами, CPT — это мощный инструмент, который помогает превратить WordPress из блога в полноценную CMS.

Как зарегистрировать пользовательский тип записей вручную через functions.php

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

function cyrtolat_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'       => 'Искать отзывы',
        'parent_item_colon'  => '',
        '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' => 'reviews'),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'comments'),
        'show_in_rest'       => true
    );

    register_post_type('reviews', $args);
}
add_action('init', 'cyrtolat_register_post_type_reviews');

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

Пояснения к параметрам register_post_type

Параметры можно настраивать под свои задачи:

  • public — доступен ли тип записи на сайте;
  • has_archive — разрешает ли архивную страницу для CPT;
  • rewrite — настройки ЧПУ (человекопонятных URL);
  • show_in_rest — нужен ли REST API и Gutenberg;
  • и другие — для полного контроля.

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

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

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

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

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

Создав CPT, нужно уметь выводить записи на фронтенде. Для этого используется класс WP_Query. Рассмотрим пример вывода последних 5 отзывов:

$args = array(
    'post_type' => 'reviews',
    'posts_per_page' => 5
);

$reviews_query = new WP_Query($args);

if ($reviews_query->have_posts()) {
    echo '<ul>';
    while ($reviews_query->have_posts()) {
        $reviews_query->the_post();
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
    wp_reset_postdata();
} else {
    echo 'Отзывы не найдены.';
}

Этот код можно вставить в шаблон темы или в шорткод для вывода отзывов в любом месте сайта.

Создание шорткода для вывода CPT

Чтобы упростить вывод, создадим шорткод [cyrtolat_reviews]:

function cyrtolat_reviews_shortcode() {
    $args = array(
        'post_type' => 'reviews',
        'posts_per_page' => 5
    );

    $query = new WP_Query($args);
    $output = '<ul>';

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
        }
    } else {
        $output .= '<li>Отзывы не найдены.</li>';
    }

    $output .= '</ul>';
    wp_reset_postdata();

    return $output;
}
add_shortcode('cyrtolat_reviews', 'cyrtolat_reviews_shortcode');

Расширение функционала: добавление пользовательских полей и таксономий

Для более сложных CPT часто нужны дополнительные поля — например, рейтинг в отзывах, дата события, цена товара и пр. Для этого можно использовать плагин Advanced Custom Fields (ACF) или регистрировать поля вручную.

Пример регистрации пользовательской таксономии «Категории отзывов» для CPT «Отзывы»:

function cyrtolat_register_taxonomy_review_category() {
    $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-category')
    );

    register_taxonomy('review_category', array('reviews'), $args);
}
add_action('init', 'cyrtolat_register_taxonomy_review_category');

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

Советы и лучшие практики

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

  • Используйте префиксы в названиях функций и шорткодов — это уменьшит риск конфликтов с другими плагинами и темами.
  • Всегда регистрируйте CPT и таксономии на хук init для корректной работы.
  • Для сложных полей используйте ACF или аналогичные плагины, чтобы не писать много кода.
  • Не забывайте про SEO: настраивайте ЧПУ, мета-теги и карту сайта отдельно для CPT.
  • Тестируйте вывод и пагинацию, чтобы пользовательский контент отображался корректно на всех устройствах.

Создание и правильное использование пользовательских типов записей значительно расширит возможности вашего сайта на WordPress и позволит реализовывать самые разные проекты с удобной структурой контента.

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

⭐⭐⭐⭐⭐
Как устроить автоматический перевод контента в WordPress: практическое руководство
06.03.2026
WooCommerce: автоматическое отключение неактивных способов оплаты
04.06.2026
Как удалить пустое содержимое из текста постов WordPress: практическое решение
29.01.2026
WooCommerce: автоматическое изменение стоимости и складского остатка при обновлении заказа
23.06.2026
WooCommerce: автоматическое изменение цены товара при обновлении заказа
18.05.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее