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

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

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

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

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

  • Чётко структурировать контент, отделяя его по смыслу;
  • Использовать отдельные шаблоны отображения для разных типов записей;
  • Управлять дополнительными метаданными и таксономиями;
  • Упростить администрирование и навигацию в админке.

Например, если вы создаёте сайт с каталогом книг, то логично создать CPT «Книги» с собственными полями и категориями.

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

Самый распространённый способ — добавить код регистрации CPT в файл functions.php вашей темы или в отдельный плагин. Рекомендуется делать это в дочерней теме или плагине, чтобы обновления не перезаписали изменения.

Вот базовый пример регистрации CPT «Книги» с основными параметрами:

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

    register_post_type('wptemy_book', $args);
}
add_action('init', 'wptemy_register_custom_post_type_books');

В этом коде:

  • register_post_type() — функция регистрации CPT;
  • wptemy_book — уникальный идентификатор типа записи (лучше использовать префикс, связанный с сайтом или темой);
  • labels — массив с переводами и названиями для админки;
  • supports — указывает, какие стандартные возможности поддерживаются (заголовок, редактор, миниатюры и т.д.);
  • show_in_rest — включает поддержку блокового редактора Gutenberg.

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

Для удобства группировки пользовательских записей можно добавить собственные таксономии (категории и метки). Пример регистрации таксономии «Жанры» для книги:

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

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

    register_taxonomy('wptemy_book_genre', 'wptemy_book', $args);
}
add_action('init', 'wptemy_register_taxonomy_book_genre');

Эта таксономия будет работать аналогично стандартным категориям, но только для книг.

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

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

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

Для большинства простых задач подойдет Custom Post Type UI. После создания CPT необходимо будет добавить шаблоны для фронтенда, либо настроить отображение через конструкторы страниц.

Пример вывода пользовательских записей в шаблоне темы

После регистрации CPT полезно знать, как вывести записи на сайте. Ниже пример запроса для вывода 5 последних книг:

<?php
$args = array(
    'post_type' => 'wptemy_book',
    'posts_per_page' => 5,
);
$wptemy_books_query = new WP_Query($args);

if ($wptemy_books_query->have_posts()) {
    echo '<ul>';
    while ($wptemy_books_query->have_posts()) {
        $wptemy_books_query->the_post();
        echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    echo '</ul>';
    wp_reset_postdata();
} else {
    echo 'Книги не найдены';
}
?>

Такой код можно вставить в шаблон, например, archive-wptemy_book.php или в любой другой файл темы.

Рекомендации по использованию пользовательских типов записей

Чтобы работа с CPT была комфортной и безопасной, придерживайтесь нескольких правил:

  • Используйте префиксы в названиях функций и идентификаторов, чтобы избежать конфликтов с другими плагинами.
  • Обязательно регистрируйте CPT и таксономии на хук init.
  • При изменении структуры CPT не забывайте сбрасывать постоянные ссылки (Permalinks) в настройках WordPress.
  • Если планируется сложный функционал, рассмотрите использование дополнительных метаполей через плагины Advanced Custom Fields или родственные.
  • Для улучшения SEO и производительности можно использовать плагин Clearfy Pro, который оптимизирует работу с CPT и таксономиями.

Также стоит обратить внимание на тему Reboot от WPShop для корректного отображения кастомных типов записей и поддержки современных стандартов WordPress.

Заключение

Пользовательские типы записей — это фундаментальный инструмент для расширения функционала WordPress. Создавая свои типы записей, вы получаете свободу в организации контента и делаете сайт удобнее для пользователей и администраторов. В статье приведены рабочие примеры кода и рекомендации по плагинам, которые помогут быстро начать работу с CPT.

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

Подробнее об этих и других продуктах можно узнать на wpshop.ru.

Как создать собственную таблицу в WordPress и работать с ней через плагин
30.11.2025
Как использовать хук pre_get_posts для фильтрации постов в WordPress
29.12.2025
Как создать и использовать собственный виджет в WordPress
21.11.2025
Как отключить AJAX в WooCommerce без плагинов
08.01.2026
Как сохранить форматирование в текстовом редакторе WordPress
29.01.2026