Собственные типы записей (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.