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

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

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

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

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

Использование CPT помогает:

  • Организовать контент по тематике и типу.
  • Упростить администрирование с помощью отдельного меню в админке.
  • Создать индивидуальные шаблоны и отображение для разных типов контента.
  • Расширить функциональность без установки тяжёлых плагинов.

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

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

Добавьте следующий код в functions.php:

function wpqa_register_custom_post_type() {
    $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' => 'otzyvy'),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'comments')
    );
    register_post_type('wpqa_otzyvy', $args);
}
add_action('init', 'wpqa_register_custom_post_type');

Этот код создаст в админке новый пункт меню «Отзывы» с возможностью создавать и редактировать записи этого типа. Параметр supports определяет, какие стандартные функции WordPress будут доступны (заголовок, редактор, миниатюра, комментарии и т.д.).

Разбор параметров регистрации CPT

В аргументах $args можно настроить:

  • public — доступен ли тип записи для публичного отображения.
  • has_archive — будет ли архивная страница с перечислением всех записей типа.
  • rewrite — настройки ЧПУ (человекопонятных URL).
  • hierarchical — похож ли тип на страницы (иерархия) или записи (плоская структура).
  • menu_position — позиция в меню админки.
  • supports — какие стандартные метабоксы включить.

Добавление пользовательских полей с помощью плагина Advanced Custom Fields (ACF)

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

ACF позволяет создавать удобный интерфейс для ввода дополнительных данных и легко выводить их в шаблонах. Например, добавим поле «Рейтинг» (число от 1 до 5) для отзывов.

После установки и активации ACF:

  1. Создайте новую группу полей «Настройки отзывов».
  2. Добавьте поле «Рейтинг» с типом «Число».
  3. Привяжите группу к типу записи «Отзывы» (выберите «Post Type» равно «wpqa_otzyvy»).

Для вывода поля в шаблоне используйте функцию ACF:

<?php
$rating = get_field('rating');
if ($rating) {
    echo '<p>Рейтинг: ' . esc_html($rating) . ' из 5</p>';
}
?>

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

Настройка отображения собственного типа записи в теме

Чтобы кастомный тип записи выглядел красиво на сайте, нужно создать шаблоны для его вывода. WordPress ищет файлы шаблонов в теме в определённом порядке.

Для одиночной записи CPT создайте файл single-wpqa_otzyvy.php, а для архива — archive-wpqa_otzyvy.php. В них можно использовать стандартный цикл WordPress:

<?php get_header(); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <h1><?php the_title(); ?></h1>
    <div><?php the_content(); ?></div>
    <?php
    $rating = get_field('rating');
    if ($rating) {
        echo '<p>Рейтинг: ' . esc_html($rating) . ' из 5</p>';
    }
    ?>
<?php endwhile; endif; ?>
<?php get_footer(); ?>

Таким образом, можно полностью контролировать внешний вид и структуру страниц с отзывами.

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

Если вы не хотите писать код, существуют удобные плагины для создания собственных типов записей:

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

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

Советы по оптимизации и безопасности CPT

При создании собственных типов записей важно учитывать:

  • Корректно регистрируйте права доступа, чтобы избежать проблем с безопасностью. Если нужно, используйте параметр capabilities.
  • Добавляйте поддержку SEO-плагинов, чтобы записи CPT индексировались и ранжировались в поисковиках.
  • Тестируйте отображение на разных устройствах и браузерах.
  • Оптимизируйте запросы к базе при выводе большого количества записей.

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

Выводы

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

Используйте CPT для упорядочивания и управления специфическими данными, добавляйте пользовательские поля с ACF, настраивайте шаблоны и не забывайте про безопасность и оптимизацию. Такой подход повысит удобство работы с сайтом и улучшит пользовательский опыт.

WooCommerce: автоматическое изменение стоимости товара в зависимости от роли пользователя
08.06.2026
WooCommerce: как изменить стоимость товара в зависимости от способа оплаты
20.06.2026
Как добавить собственный тип записи в WordPress
25.11.2025
Как избежать проблем с просмотром видео в WordPress: практические решения и плагины
08.01.2026
Автоматическое удаление старых changelog-ов в WordPress: практическое руководство
09.02.2026