Пользовательские типы записей (Custom Post Types, CPT) — это мощный инструмент WordPress, который позволяет создавать уникальные структуры контента, отличные от стандартных «Записей» и «Страниц». Использование CPT идеально подходит, если вам нужно организовать контент в виде каталогов, портфолио, отзывов, событий или других нестандартных объектов.
Что такое пользовательские типы записей и зачем они нужны
По умолчанию WordPress предлагает два основных типа контента: записи и страницы. Однако в реальных проектах часто возникает необходимость работать с более специфическим контентом, например, с товарами, мероприятиями или кейсами. Чтобы избежать путаницы и правильно структурировать сайт, создают пользовательские типы записей.
Пользовательские типы записей позволяют:
- Разграничить контент по смыслу и функциональности.
- Настроить отдельный интерфейс админки для удобного управления.
- Добавить индивидуальные таксономии (рубрики, метки) для каждого типа.
- Улучшить SEO и навигацию на сайте.
Это особенно важно для сложных сайтов, где контент сильно различается по структуре и назначению.
Как зарегистрировать пользовательский тип записи вручную
Самый гибкий способ — использовать функцию register_post_type() в файле functions.php вашей темы или в отдельном плагине. Рассмотрим пример регистрации типа «Отзывы» с базовыми настройками.
function wpcom_register_post_type_reviews() {
$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,
'has_archive' => true,
'rewrite' => array('slug' => 'reviews'),
'show_in_rest' => true, // Включает поддержку Gutenberg
'supports' => array('title', 'editor', 'author', 'thumbnail', 'comments'),
'menu_position' => 5,
'menu_icon' => 'dashicons-testimonial',
);
register_post_type('wpcom_reviews', $args);
}
add_action('init', 'wpcom_register_post_type_reviews');В этом примере создается CPT с названием wpcom_reviews, который появляется в админ-панели с иконкой отзывов. Параметр supports определяет, какие метабоксы будут доступны при добавлении записи: заголовок, редактор, миниатюра и т.д.
Объяснение параметров
labels — массив с названиями для интерфейса админки на русском языке.
public — делает тип записи общедоступным на сайте и в админке.
has_archive — включает архивную страницу с перечнем всех записей типа.
rewrite — задаёт слаг для ЧПУ.
show_in_rest — важный параметр для поддержки редактора Gutenberg и REST API.
supports — набор функций, которые поддерживает тип записи.
Добавление пользовательских таксономий для CPT
Для структурирования пользовательских типов записей полезно создавать собственные таксономии — рубрики или метки, относящиеся только к данному CPT. Например, для отзывов можно добавить таксономию «Тип отзыва».
function wpcom_register_taxonomy_review_type() {
$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_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'review-type'),
);
register_taxonomy('wpcom_review_type', array('wpcom_reviews'), $args);
}
add_action('init', 'wpcom_register_taxonomy_review_type');Теперь в админке вы увидите отдельный раздел для управления типами отзывов. Это удобно для фильтрации и организации контента.
Лучшие плагины для создания и управления CPT
Если вы не хотите писать код вручную, воспользуйтесь проверенными плагинами:
- Custom Post Type UI — простой и удобный интерфейс для регистрации CPT и таксономий без программирования.
- Pods Framework — мощный инструмент для создания CPT, таксономий и дополнительных полей.
- Toolset Types — комплексное решение с визуальным конструктором типов записей и полей.
Эти плагины позволяют быстро настроить структуру сайта и гибко управлять контентом без глубоких знаний PHP.
Вывод пользовательских типов записей на фронтенде
После создания CPT нужно правильно вывести записи на сайте. Для этого создайте шаблон архива archive-wpcom_reviews.php в папке темы. Пример базового цикла вывода:
<?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>
<div><?php the_excerpt(); ?></div>
</li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p>Отзывы не найдены.</p>
<?php endif; ?>
<?php get_footer(); ?>Для одиночных отзывов создайте шаблон single-wpcom_reviews.php, где подробно выведите содержимое записи.
Советы по работе с CPT и производительностью
При работе с большим количеством пользовательских типов и записей стоит учитывать производительность:
- Используйте
show_in_rest => trueдля поддержки REST API и современных редакторов. - Кешируйте запросы к CPT с помощью Transients API или внешних плагинов кеширования.
- Оптимизируйте таксономии — не создавайте слишком много иерархий без необходимости.
- Следите за индексированием в поисковых системах — настройте robots.txt и метатеги для CPT.
Так вы получите структурированный, быстрый и удобный сайт на базе WordPress.
Заключение
Пользовательские типы записей — это фундамент для создания уникальных проектов на WordPress. Они позволяют структурировать любой контент, создавать удобный интерфейс управления и улучшать взаимодействие с пользователями. С помощью ручной регистрации CPT или удобных плагинов вы легко расширите возможности вашего сайта, сделав его мощнее и удобнее.