В WordPress одна из самых мощных возможностей для расширения функционала — это создание кастомных типов записей (Custom Post Types, CPT) и собственных таксономий. Они позволяют структурировать контент не только стандартным способом, но и создавать уникальные разделы сайта под любые задачи: портфолио, товары, мероприятия, отзывы и многое другое.
Что такое кастомные типы записей и таксономии в WordPress
Кастомные типы записей — это альтернативные типы контента, отличные от стандартных «Записей» и «Страниц». Например, если вы создаёте сайт агентства, можно сделать CPT «Проекты» с набором полей и шаблоном вывода.
Таксономии — это способ группировки записей. По умолчанию есть категории и метки, но можно создавать свои, например, «Типы проектов» или «Темы».
Такой подход облегчает управление контентом и улучшает UX для пользователей и администраторов сайта.
Регистрация кастомного типа записей: пример кода
Для регистрации CPT используется функция register_post_type(). Ниже пример создания типа записей portfolio с базовыми настройками.
function wptemplates_register_post_type_portfolio() {
$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' => 'portfolio'),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'),
'show_in_rest' => true
);
register_post_type('portfolio', $args);
}
add_action('init', 'wptemplates_register_post_type_portfolio');Этот код помещаем в файл functions.php вашей темы или в отдельный плагин. После активации в админке появится новый пункт меню «Портфолио».
Создание кастомной таксономии для типа портфолио
Чтобы сделать фильтрацию проектов удобной, создадим таксономию project_type. Это может быть, например, «Веб-дизайн», «Фотография» и т.п.
function wptemplates_register_taxonomy_project_type() {
$labels = array(
'name' => 'Типы проектов',
'singular_name' => 'Тип проекта',
'search_items' => 'Искать типы',
'all_items' => 'Все типы',
'edit_item' => 'Редактировать тип',
'add_new_item' => 'Добавить новый тип',
'menu_name' => 'Типы проектов'
);
$args = array(
'labels' => $labels,
'hierarchical' => true, // как категории
'show_ui' => true,
'show_in_rest' => true,
'rewrite' => array('slug' => 'project-type')
);
register_taxonomy('project_type', array('portfolio'), $args);
}
add_action('init', 'wptemplates_register_taxonomy_project_type');Теперь при добавлении проекта можно выбрать или создать новый тип проекта.
Вывод кастомных записей и таксономий в шаблоне
Для вывода созданных записей используйте WP_Query с параметром post_type. Пример выборки последних 5 проектов с таксономией:
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 5,
'tax_query' => array(
array(
'taxonomy' => 'project_type',
'field' => 'slug',
'terms' => 'web-design',
),
),
);
$portfolio_query = new WP_Query($args);
if ($portfolio_query->have_posts()) {
while ($portfolio_query->have_posts()) {
$portfolio_query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
the_excerpt();
}
wp_reset_postdata();
} else {
echo 'Проекты не найдены';
}Этот код можно вставить в любой шаблон темы, например, в страницу архива или отдельный шаблон.
Плагины для удобного создания CPT и таксономий
Если не хочется писать код вручную, можно использовать плагины, которые создают CPT и таксономии через интерфейс:
- Custom Post Type UI — очень популярный и простой плагин для регистрации CPT и таксономий.
- Pods — расширенный плагин с возможностью создавать и настраивать типы записей, таксономии и дополнительные поля.
- ACF (Advanced Custom Fields) — не создаёт CPT, но позволяет очень гибко настраивать дополнительные поля для любых типов записей.
Для интеграции с WPShop.ru рекомендуем обратить внимание на плагин Clearfy Pro. Он содержит множество оптимизаций и инструментов, которые помогут управлять CPT и улучшать структуру сайта.
Советы по работе с кастомными типами записей
При работе с CPT и таксономиями стоит учитывать несколько важных моментов:
- ЧПУ и пермалинки: после регистрации CPT и таксономий обязательно обновите постоянные ссылки в админке (Настройки → Постоянные ссылки), чтобы новые URL заработали корректно.
- Поддержка REST API: добавляйте параметр
'show_in_rest' => true, если планируете использовать Gutenberg или создавать фронтенд на React/Vue с использованием WP REST API. - SEO: для SEO важна правильная структура. Используйте плагины типа Yoast SEO или Rank Math — большинство поддерживают кастомные типы записей.
- Кэширование: при интенсивной работе с CPT следите за кэшированием, чтобы не показывать устаревшие данные.
Пример комплексного решения: портфолио с фильтрацией
Объединим всё вместе: CPT «Портфолио», таксономия «Типы проектов» и вывод с фильтром через AJAX.
1. Регистрируем CPT и таксономию, как показано выше.
2. Создаём фронтенд фильтр, где пользователь выбирает тип проекта.
3. Через AJAX отправляем запрос на сервер и возвращаем список проектов.
Вот упрощённый пример AJAX-запроса (вставьте в JS вашего шаблона):
jQuery(document).ready(function($) {
$('#project-type-filter').on('change', function() {
var term = $(this).val();
$.ajax({
url: wptemplates_ajax_object.ajax_url,
type: 'POST',
data: {
action: 'wptemplates_filter_portfolio',
project_type: term
},
success: function(response) {
$('#portfolio-list').html(response);
}
});
});
});И PHP-код обработчика:
function wptemplates_ajax_filter_portfolio() {
$term = sanitize_text_field($_POST['project_type']);
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => -1,
);
if (!empty($term)) {
$args['tax_query'] = array(
array(
'taxonomy' => 'project_type',
'field' => 'slug',
'terms' => $term,
),
);
}
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<div class="portfolio-item"><h3>' . get_the_title() . '</h3></div>';
}
wp_reset_postdata();
} else {
echo 'Проекты не найдены';
}
wp_die();
}
add_action('wp_ajax_wptemplates_filter_portfolio', 'wptemplates_ajax_filter_portfolio');
add_action('wp_ajax_nopriv_wptemplates_filter_portfolio', 'wptemplates_ajax_filter_portfolio');Такой подход улучшает UX, позволяя пользователям быстро находить нужные проекты без перезагрузки страницы.
Заключение
Создание кастомных типов записей и таксономий — мощный инструмент для построения индивидуальных решений на WordPress. С помощью PHP-кода или удобных плагинов вы сможете легко структурировать контент под любые задачи и сделать сайт более удобным и функциональным.
Для удобной работы с CPT и оптимизации рекомендуем изучить и использовать плагины с https://wpshop.ru/?utm_source=wptemplates.ru&utm_medium=article&utm_campaign=custom-post-types-taxonomies-wp, такие как Clearfy Pro, которые помогут сделать ваш сайт быстрее и безопаснее.