WordPress по умолчанию предлагает стандартные типы записей — записи (posts) и страницы (pages). Но зачастую для сайтов нужны собственные типы контента, например, портфолио, отзывы, товары, мероприятия и прочее. Для этого используются Custom Post Types (CPT) — пользовательские типы записей, позволяющие гибко расширять структуру сайта.
Что такое Custom Post Types и зачем они нужны в WordPress
Custom Post Types — это специальный механизм WordPress, который позволяет создавать новые типы записей с уникальными параметрами и логикой. Они позволяют структурировать контент лучше, чем просто категории и теги, и позволяют создавать админ-панель с удобными интерфейсами для новых видов информации.
Например, если вы ведёте сайт с событиями, лучше создать CPT «События», чем пытаться подгонять события под стандартные записи. Так вы сможете добавить отдельные поля, метки и даже шаблоны отображения.
Также CPT хорошо интегрируются с таксономиями, метаполями и REST API WordPress. Это делает их универсальным инструментом для разработчиков.
Создание Custom Post Type с помощью кода в functions.php
Самый популярный способ — зарегистрировать CPT через функцию register_post_type(). Ниже пример создания CPT «Отзывы» с базовыми настройками:
function wplite_register_post_type_reviews() {
$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' => 'otzyvy'),
'supports' => array('title', 'editor', 'author', 'thumbnail', 'comments'),
'show_in_rest' => true,
);
register_post_type('wplite_reviews', $args);
}
add_action('init', 'wplite_register_post_type_reviews');
Обратите внимание на параметр 'show_in_rest' => true, который включает поддержку Gutenberg и REST API для кастомного типа.
Настройка кастомных таксономий для Custom Post Types
Для удобной категоризации CPT разумно добавить свои таксономии. Например, для отзывов можно добавить таксономию «Тип отзыва».
Пример регистрации таксономии:
function wplite_register_taxonomy_review_type() {
$labels = array(
'name' => 'Типы отзывов',
'singular_name' => 'Тип отзыва',
'search_items' => 'Искать типы',
'all_items' => 'Все типы',
'edit_item' => 'Редактировать тип',
'update_item' => 'Обновить тип',
'add_new_item' => 'Добавить новый тип',
'new_item_name' => 'Название нового типа',
'menu_name' => 'Типы отзывов',
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'review-type'),
'show_in_rest' => true,
);
register_taxonomy('wplite_review_type', array('wplite_reviews'), $args);
}
add_action('init', 'wplite_register_taxonomy_review_type');
Теперь в админке при создании отзывов появится возможность назначать типы отзывов.
Использование популярных плагинов для создания Custom Post Types
Если кодинг не ваш конёк или хотите упростить задачу, можно использовать плагины. Вот несколько проверенных инструментов:
- Custom Post Type UI — удобный интерфейс для создания CPT и таксономий без кода.
- Pods — расширенный плагин для управления CPT, метаполями, таксономиями и связями между ними.
- Toolset Types — мощный инструмент с визуальными настройками и интеграцией с другими плагинами.
Для сайта с небольшим опытом рекомендую начать с Custom Post Type UI, так как он прост и понятен.
Пример вывода Custom Post Types на фронтенде
Для отображения кастомных записей в шаблоне можно использовать WP_Query. Пример вывода последних 5 отзывов с их типами:
$args = array(
'post_type' => 'wplite_reviews',
'posts_per_page' => 5,
);
$query = new WP_Query($args);
if ($query->have_posts()) {
echo '<ul>';
while ($query->have_posts()) {
$query->the_post();
$types = get_the_terms(get_the_ID(), 'wplite_review_type');
$type_names = array();
if ($types && !is_wp_error($types)) {
foreach ($types as $type) {
$type_names[] = $type->name;
}
}
echo '<li><strong>' . get_the_title() . '</strong> (' . implode(', ', $type_names) . ')<br>' . get_the_excerpt() . '</li>';
}
echo '</ul>';
wp_reset_postdata();
} else {
echo 'Отзывы не найдены.';
}
Этот код можно добавить в любой шаблон темы, где хотите вывести отзывы.
Советы и лучшие практики при работе с CPT
1. Используйте префикс в названии CPT и таксономий, например, wplite_, чтобы избежать конфликтов с другими плагинами.
2. Указывайте show_in_rest = true, чтобы обеспечить поддержку редактора Gutenberg и REST API.
3. Для сложных структур используйте метаполя — их можно добавить с помощью ACF (Advanced Custom Fields) или Pods.
4. Если CPT должен иметь архив — указывайте has_archive = true и продумывайте удобные URL с помощью rewrite.
5. Тестируйте отображение CPT на фронтенде, чтобы обеспечить удобство для пользователей и SEO.
Интеграция Custom Post Types с плагином Clearfy Pro для оптимизации
Плагин Clearfy Pro позволяет оптимизировать работу сайта, включая управление CPT. Например, вы можете отключать неиспользуемые CPT и таксономии для ускорения загрузки сайта и снижения нагрузки на базу данных.
Также Clearfy помогает в оптимизации URL и SEO-настроек для кастомных записей, что важно для успешного продвижения.
Заключение
Custom Post Types — мощный инструмент WordPress, позволяющий создавать гибкие и структурированные сайты с уникальным контентом. Как показано в статье, их можно легко зарегистрировать вручную или с помощью плагинов, добавить таксономии и вывести на сайт. Используйте лучшие практики и интеграции с оптимизирующими плагинами, чтобы сделать ваш сайт быстрым, удобным и функциональным.