Как добавить собственные типы записей (Custom Post Types) в WordPress: практическое руководство

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

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

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

Custom Post Types позволяют создавать новые типы контента с собственными метаданными, таксономиями и шаблонами вывода. Это позволяет структурировать данные удобным образом и улучшить управление сайтом.

Создание собственного типа записи через functions.php

Самый универсальный способ добавить CPT — использовать функцию register_post_type(). Лучше всего регистрировать CPT при инициализации WordPress, используя хук init. Рассмотрим пример создания типа записи «Проекты».

function wpskills_register_projects_cpt() {
    $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' => 'projects'),
        'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'),
        'show_in_rest' => true, // Для поддержки Gutenberg
        'menu_position' => 5,
        'menu_icon' => 'dashicons-portfolio',
    );

    register_post_type('wpskills_project', $args);
}
add_action('init', 'wpskills_register_projects_cpt');

В этом примере мы создали новый тип записи с названием wpskills_project, который будет отображаться в админке как «Проекты». Параметр supports задаёт, какие элементы редактора будут доступны, а show_in_rest — включение поддержки редактора Gutenberg.

Почему важно использовать префикс в названии функции и типа записи

Использование уникального префикса (например, wpskills_) предотвращает конфликты с функциями и типами записи других плагинов и тем. Это хорошая практика для поддерживаемого кода.

Добавление таксономий (меток и категорий) для собственного типа записи

Для расширения функционала CPT часто нужно создавать собственные таксономии, например, категории или метки, специфичные для этого типа записи. Для этого используется функция register_taxonomy().

function wpskills_register_project_taxonomies() {
    $labels = array(
        'name' => 'Типы проектов',
        'singular_name' => 'Тип проекта',
        'search_items' => 'Поиск типов проектов',
        'all_items' => 'Все типы проектов',
        'edit_item' => 'Редактировать тип проекта',
        'add_new_item' => 'Добавить новый тип проекта',
        'menu_name' => 'Типы проектов',
    );

    $args = array(
        'labels' => $labels,
        'hierarchical' => true, // как категории
        'show_in_rest' => true,
        'rewrite' => array('slug' => 'project-type'),
    );

    register_taxonomy('wpskills_project_type', 'wpskills_project', $args);
}
add_action('init', 'wpskills_register_project_taxonomies');

В результате для типа записи «Проекты» появится новая таксономия «Типы проектов», которая работает аналогично категориям и поддерживает REST API.

Использование плагинов для создания Custom Post Types

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

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

Для примера, чтобы создать CPT через Custom Post Type UI, достаточно установить плагин, перейти в «CPT UI» > «Add/Edit Post Types» и заполнить форму, указав название, метки и настройки.

Отображение собственных типов записей в шаблонах WordPress

После регистрации CPT важно корректно вывести записи на сайте. Для этого создаются шаблоны в теме:

  • archive-wpskills_project.php — для страниц архива типа записи
  • single-wpskills_project.php — для одиночных записей типа

Если таких файлов нет, WordPress будет использовать archive.php или single.php. В шаблонах можно использовать стандартный цикл WordPress:

<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <h2><?php the_title(); ?></h2>
        <div class="content"><?php the_content(); ?></div>
    <?php endwhile; ?>
<?php else : ?>
    <p>Записей не найдено.</p>
<?php endif; ?>

Для вывода таксономий можно использовать функцию the_terms():

<?php the_terms( get_the_ID(), 'wpskills_project_type', 'Типы: ', ', ' ); ?>

Практические советы и особенности работы с CPT

Чистка пермалинков после регистрации CPT

После добавления нового типа записи обязательно обновите структуру постоянных ссылок — зайдите в «Настройки» > «Постоянные ссылки» и нажмите «Сохранить изменения» без правок. Это нужно для правильной работы URL.

Права доступа и роли пользователей

При регистрации CPT можно задать параметры capability_type и capabilities, чтобы управлять правами доступа. По умолчанию CPT наследуют права для постов, но для сложных проектов стоит настроить отдельные права.

Оптимизация и производительность

Собственные типы записей, особенно если их много, требуют правильной индексации и оптимизации запросов. Избегайте излишнего количества метаполей и используйте кэширование, например, через плагин Clearfy Pro (подробнее на wpshop.ru).

Вывод

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

Оптимизация запросов WordPress с помощью фильтра pre_get_posts
28.04.2026
Как добавить автоматический alt к изображениям в WordPress
08.01.2026
WooCommerce: решение проблем с авторизацией через телефон без плагинов
16.05.2026
Отложенный запуск задач в WordPress без пингов: практическое руководство
14.04.2026
Как отключить комментарии на отдельных страницах WordPress
31.03.2026