Пользовательские типы записей (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.