В WordPress стандартно доступны типы записей «Публикации» и «Страницы». Однако для организации контента под специфические задачи часто требуется создавать собственные уникальные типы записей (custom post types, CPT). В этой статье мы подробно разберем, как создать уникальные типы записей без использования плагинов, прямо через код. Это позволит вам гибко структурировать сайт и оптимизировать работу с данными.
Что такое уникальные типы записей и зачем они нужны
Уникальные типы записей позволяют создавать отдельные логические блоки контента, которые отличаются от обычных постов и страниц. Например, если вы ведете сайт с каталогом продукции, вы можете создать тип записи «Товар» с собственными полями и таксономиями. Это значительно упрощает управление контентом и его вывод на сайте.
В отличие от плагинов, которые часто создают CPT, регистрация через код дает полный контроль и не нагружает систему лишними функциями.
Регистрация уникального типа записи — пошаговое руководство
Для регистрации собственного типа записи используется функция register_post_type(). Рекомендуется добавлять регистрацию в файл functions.php вашей темы или, что лучше, в отдельный плагин, чтобы сохранить логику отдельно от темы.
Пример создания типа записи «Проекты»
function wpbox_register_projects_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' => 'projects'),
'show_in_rest' => true, // поддержка Gutenberg
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'),
'menu_position' => 5,
'menu_icon' => 'dashicons-portfolio',
);
register_post_type('wpbox_project', $args);
}
add_action('init', 'wpbox_register_projects_cpt');
В этом примере создается тип записи с названием «Проекты», который будет отображаться в административной панели с иконкой и поддержкой основных функций.
Добавление таксономий для уникального типа записи
Часто для CPT необходимо создавать собственные таксономии (категории, теги). Это позволяет гибко классифицировать контент.
Пример создания таксономии «Тип проекта»
function wpbox_register_project_taxonomies() {
$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' => 'project-type'),
'show_in_rest' => true,
);
register_taxonomy('wpbox_project_type', array('wpbox_project'), $args);
}
add_action('init', 'wpbox_register_project_taxonomies');
Теперь у ваших проектов будет своя таксономия, которую можно использовать для фильтрации и вывода.
Вывод уникальных типов записей на фронтенде WordPress
Чтобы отобразить созданные проекты на сайте, можно использовать WP_Query с параметром post_type. Например, чтобы вывести последние 5 проектов:
$args = array(
'post_type' => 'wpbox_project',
'posts_per_page' => 5,
);
$projects_query = new WP_Query($args);
if ($projects_query->have_posts()) {
echo '<ul>';
while ($projects_query->have_posts()) {
$projects_query->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
echo '</ul>';
wp_reset_postdata();
} else {
echo 'Проекты не найдены.';
}
Этот код можно вставить в шаблон темы для вывода кастомного типа записи.
Интеграция с плагинами и дополнительными возможностями
Хотя мы создаем CPT без плагинов, вы можете использовать плагины для расширения функционала. Например, плагин Clearfy Pro поможет оптимизировать скорость и безопасность, а WPRemark можно использовать для добавления отзывов к проектам.
Также рекомендуем обратить внимание на темы Reboot или Root, они отлично подходят для сайтов с кастомным контентом.
Советы по отладке и поддержке CPT
Если после добавления кода тип записи не отображается в админке, попробуйте обновить постоянные ссылки (Permalinks) в настройках WordPress. Это частая причина проблем с отображением ссылок для новых типов записей.
При работе с CPT следите за уникальностью слагов и корректностью регистрации таксономий, чтобы избежать конфликтов с другими плагинами или темами.
Итог
Создание уникальных типов записей без плагинов — эффективный способ структурировать контент WordPress и сделать сайт более функциональным и удобным для пользователей. Используйте приведенные примеры, адаптируйте их под свои задачи и расширяйте функционал по мере необходимости.