Собственные типы записей (Custom Post Types, CPT) в WordPress позволяют расширить функциональность сайта, выходя за рамки стандартных записей и страниц. Например, если вы создаёте сайт с каталогом товаров, отзывами или событиями, CPT помогут структурировать контент и упростить его управление.
Что такое собственные типы записей и зачем они нужны
Стандартно WordPress предлагает два основных типа контента: записи (posts) и страницы (pages). Но для специфических задач этого часто недостаточно. Собственные типы записей позволяют создавать новые категории контента с уникальными параметрами и возможностями.
Например, для сайта на wpmanager.ru это может быть полезно, если вы хотите создать раздел с обзорами плагинов или уроками, отделёнными от стандартного блога.
Основные преимущества CPT:
- Разделение контента по типам для удобства управления;
- Возможность назначать отдельные таксономии (категории и метки);
- Настройка интерфейса админ-панели для удобства редактирования;
- Гибкость при выводе и фильтрации на фронтенде.
Как зарегистрировать собственный тип записей вручную
Для регистрации CPT в WordPress используется функция register_post_type(), которую нужно вызвать на хук init. Ниже представлен пример, который регистрирует тип записей «Обзоры плагинов».
function wpmanager_register_plugin_reviews_cpt() {
$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,
'has_archive' => true,
'rewrite' => array('slug' => 'plugin-reviews'),
'show_in_rest' => true, // для поддержки Gutenberg
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'comments'),
'menu_position' => 5,
'menu_icon' => 'dashicons-admin-plugins',
'taxonomies' => array('category', 'post_tag'),
'capability_type' => 'post'
);
register_post_type('plugin_reviews', $args);
}
add_action('init', 'wpmanager_register_plugin_reviews_cpt');Этот код нужно добавить в файл functions.php вашей темы или в собственный плагин. В результате в админ-панели появится новый пункт меню «Обзоры плагинов» с привычным интерфейсом.
Объяснение параметров
labels — массив с названиями для разных элементов интерфейса.
public — делает тип записи доступным на сайте и в админке.
has_archive — разрешает архивную страницу типа записи.
rewrite — настраивает ЧПУ для типа записи.
show_in_rest — включает поддержку REST API и редактора Gutenberg.
supports — определяет, какие возможности редактора доступны (заголовок, редактор, миниатюра и т.д.).
menu_icon — иконка в меню админки.
Добавление кастомных таксономий к собственному типу записей
Для удобного структурирования контента полезно создавать свои таксономии — категории и метки, которые не пересекаются со стандартными. Ниже пример регистрации таксономии «Тип обзора» для CPT «Обзоры плагинов».
function wpmanager_register_review_type_taxonomy() {
$labels = array(
'name' => 'Типы обзоров',
'singular_name' => 'Тип обзора',
'search_items' => 'Искать типы обзоров',
'all_items' => 'Все типы обзоров',
'parent_item' => 'Родительский тип обзора',
'parent_item_colon' => 'Родительский тип обзора:',
'edit_item' => 'Редактировать тип обзора',
'update_item' => 'Обновить тип обзора',
'add_new_item' => 'Добавить новый тип обзора',
'new_item_name' => 'Название нового типа обзора',
'menu_name' => 'Типы обзоров',
);
$args = array(
'hierarchical' => true, // похожа на категории
'labels' => $labels,
'show_ui' => true,
'show_in_rest' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'review-type'),
);
register_taxonomy('review_type', array('plugin_reviews'), $args);
}
add_action('init', 'wpmanager_register_review_type_taxonomy');Теперь для каждого обзора можно выбрать тип, например, «Текстовый», «Видеообзор», «Сравнение» и т.д. Это поможет выводить обзоры по категориям на сайте.
Вывод собственных типов записей на фронтенде
Для отображения CPT можно использовать стандартный WP_Query. Вот пример функции для вывода последних 5 обзоров плагинов с их заголовками и ссылками:
function wpmanager_display_latest_plugin_reviews() {
$args = array(
'post_type' => 'plugin_reviews',
'posts_per_page' => 5
);
$query = new WP_Query($args);
if ($query->have_posts()) {
echo '<ul>';
while ($query->have_posts()) {
$query->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
echo '</ul>';
} else {
echo '<p>Обзоры не найдены.</p>';
}
wp_reset_postdata();
}Эту функцию можно вызвать в нужном месте шаблона, чтобы вывести список обзоров.
Фильтрация по таксономии
Чтобы вывести обзоры только определённого типа, добавьте параметр tax_query в WP_Query:
$args = array(
'post_type' => 'plugin_reviews',
'tax_query' => array(
array(
'taxonomy' => 'review_type',
'field' => 'slug',
'terms' => 'videoobzor',
),
),
);
$query = new WP_Query($args);Советы по работе с собственными типами записей
1. Планируйте структуру данных заранее. Продумайте, какие типы записей и таксономии нужны именно вашему проекту.
2. Используйте поддержку REST API. Это позволит легко интегрировать CPT с Gutenberg и внешними сервисами.
3. Добавляйте мета-поля. Для расширения функционала CPT используйте функции для добавления пользовательских полей. Например, с помощью add_meta_box.
4. Оптимизируйте запросы. При большом объёме контента используйте кэширование и грамотное построение WP_Query.
Применение CPT в WPShop.ru: примеры и рекомендации
На WPShop.ru можно найти готовые решения и плагины для расширения функционала WordPress. Например, плагин Expert Review позволяет удобно создавать и выводить отзывы, которые по сути являются кастомным типом записей с дополнительными возможностями.
Используйте их как отправную точку, а при необходимости кастомизируйте вручную, чтобы максимально контролировать структуру и отображение данных.
Заключение
Добавление собственных типов записей в WordPress — мощный инструмент для организации и расширения сайта. Ручная регистрация CPT без плагинов позволяет создавать максимально лёгкие и адаптированные под задачи решения. В этой статье вы получили подробный разбор процесса с примерами и советами, которые помогут быстро и эффективно внедрить CPT на вашем сайте.