Как добавить собственные типы постов в WordPress с подробным примером

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

Что такое собственные типы постов и для чего они нужны

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

Например, если вы создаёте сайт с каталогом книг, то можно завести тип поста book. Для сайта с мероприятиями — event. Это упрощает работу с контентом и позволяет сделать админку удобнее для конечных пользователей.

Кроме того, собственные типы постов позволяют:

  • Использовать отдельные шаблоны для отображения;
  • Настраивать метаданные и таксономии, специфичные для типа поста;
  • Применять разные права доступа и фильтры;
  • Упрощать поиск и сортировку контента.

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

Для регистрации CPT используется функция register_post_type(), которую следует вызвать на хук init. Рассмотрим пример регистрации типа поста book с параметрами, которые сделают его удобным в админке и на сайте.

function wpeasy_register_post_type_book() {
    $labels = array(
        'name'               => 'Книги',
        'singular_name'      => 'Книга',
        'menu_name'          => 'Книги',
        'name_admin_bar'     => 'Книга',
        'add_new'            => 'Добавить книгу',
        'add_new_item'       => 'Добавить новую книгу',
        'edit_item'          => 'Редактировать книгу',
        'new_item'           => 'Новая книга',
        'view_item'          => 'Посмотреть книгу',
        '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,
        'menu_icon'          => 'dashicons-book',
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
    );

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

Данный код создаст в админке отдельное меню «Книги» с возможностью добавления, редактирования и удаления записей данного типа. Опция supports указывает, какие стандартные возможности WordPress будут доступны у типа поста — заголовок, редактор, миниатюра и т.д.

Описание ключевых параметров

labels — массив с названиями для интерфейса (админка, меню, подсказки).
public — делает тип поста доступным на сайте и в админке.
rewrite — управляет ЧПУ (человеко-понятными URL).
has_archive — создаёт архивную страницу с перечислением всех записей.
menu_icon — иконка в меню админки из набора dashicons.

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

Чтобы структурировать контент, часто используют таксономии — категории и метки. Для собственных типов постов можно регистрировать свои таксономии или использовать стандартные.

Пример: создадим таксономию «Жанры» для типа поста book.

function wpeasy_register_taxonomy_genre() {
    $labels = array(
        'name'              => 'Жанры',
        'singular_name'     => 'Жанр',
        'search_items'      => 'Искать жанры',
        'all_items'         => 'Все жанры',
        'parent_item'       => 'Родительский жанр',
        'parent_item_colon' => 'Родительский жанр:',
        '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', 'wpeasy_register_taxonomy_genre');

Теперь в карточках книг можно будет назначать жанры, что позволит фильтровать и выводить книги по этим жанрам.

Вывод собственных типов постов на сайте

Для вывода CPT на фронтенде WordPress можно создать специальный шаблон архива и шаблон отдельной записи.

Архив для типа book создаётся в файле archive-book.php. В этом файле можно использовать стандартный Loop WordPress.

<?php get_header(); ?>

<h1>Каталог книг</h1>

<?php if ( have_posts() ) : ?>
    <ul>
    <?php while ( have_posts() ) : the_post(); ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endwhile; ?>
    </ul>
<?php else : ?>
    <p>Книги не найдены.</p>
<?php endif; ?>

<?php get_footer(); ?>

Для отдельной записи создайте файл single-book.php, где вы сможете вывести все данные книги, включая произвольные поля и таксономии.

Пример вывода произвольного поля

Если для книги вы добавили произвольное поле, например isbn, то в шаблоне можно вывести его так:

$isbn = get_post_meta(get_the_ID(), 'isbn', true);
echo '<p>ISBN: ' . esc_html($isbn) . '</p>';

Рекомендации и полезные плагины для работы с CPT

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

  • Custom Post Type UI — популярный плагин с удобным интерфейсом для создания CPT и таксономий без кода.
  • Advanced Custom Fields (ACF) — позволяет добавлять произвольные поля к CPT и удобно выводить их в шаблонах.

Если хотите интегрировать CPT с SEO-плагинами, убедитесь, что они поддерживают ваш тип постов. Например, в Clearfy Pro из wpshop.ru есть опции для оптимизации CPT.

Заключение по теме создания и использования собственных типов постов

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

Главное — грамотно регистрировать CPT и таксономии, настраивать шаблоны для их вывода и использовать дополнительные плагины для управления и расширения функционала. Приведённые примеры кода помогут быстро начать работу и избежать типичных ошибок.

Как удалить все записи (посты) из WordPress через код — практическое решение
21.12.2025
Как сделать автоматический откат обновлений WordPress при ошибках
10.04.2026
WooCommerce: как исправить проблемы с отображением вариантов товаров
08.07.2026
WooCommerce: автоматическое изменение стоимости товара при определённых условиях
20.05.2026
WooCommerce: не работает оплата через разные платёжные системы – диагностика и исправление
20.04.2026