В WordPress по умолчанию есть несколько типов контента: записи (posts), страницы (pages), вложения (attachments) и другие системные типы. Но часто возникает потребность создать свои собственные типы постов — кастомные типы (Custom Post Types, CPT) — для удобной организации и управления контентом. Например, если вы ведёте сайт с обзорами книг, можно создать тип поста «Книга», а для сайта недвижимости — «Объявление». В этой статье разберём, как добавить дополнительные типы постов в WordPress без использования плагинов, используя только код и основные возможности WordPress.
Что такое кастомные типы постов в WordPress и зачем они нужны
Кастомные типы постов позволяют расширить стандартный функционал WordPress и структурировать контент более гибко. С их помощью вы можете создавать разные виды контента, каждый со своими параметрами, метаданными и интерфейсом в админке.
Например, на сайте с автосалоном можно создать тип поста «Автомобиль», с полями для марки, модели, года выпуска и цены. Это гораздо удобнее, чем использовать обычные записи, потому что тип поста можно настроить под конкретные задачи и вывести на сайте по-своему.
Регистрация кастомного типа поста происходит с помощью функции register_post_type(), которую нужно вызвать в хуке init. Рассмотрим, как это сделать.
Как зарегистрировать кастомный тип поста вручную через functions.php
Откройте файл functions.php вашей темы (или лучше дочерней темы, чтобы не потерять изменения при обновлении) и добавьте следующий код:
function wplancer_register_custom_post_type_book() {
$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,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'book'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 5,
'menu_icon' => 'dashicons-book',
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments')
);
register_post_type('wplancer_book', $args);
}
add_action('init', 'wplancer_register_custom_post_type_book');В этом примере мы регистрируем тип поста wplancer_book с названием «Книги». Обратите внимание на массив $labels — он отвечает за отображаемые в админке названия. Параметр 'supports' указывает, какие стандартные функции WordPress будут доступны для этого типа (заголовок, редактор, миниатюры и т.д.).
После добавления кода и обновления админки у вас появится новый раздел меню «Книги», где вы сможете создавать и редактировать записи этого типа.
Настройка таксономий для кастомных типов постов
Для удобной категоризации кастомных типов постов стоит добавить свои таксономии — аналоги категорий и меток. Это позволит фильтровать контент и выводить его на сайте по определённым признакам. Например, для «Книг» можно добавить таксономию «Жанр».
Добавим таксономию «Жанр» к нашему типу поста «Книга»:
function wplancer_register_taxonomy_genre() {
$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_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'genre'),
);
register_taxonomy('wplancer_genre', array('wplancer_book'), $args);
}
add_action('init', 'wplancer_register_taxonomy_genre');Теперь в редакторе книг появится метабокс для выбора жанра. Таксономии можно создавать и неиерархическими, аналогично меткам (tags), если нужно.
Вывод кастомных типов постов на сайте — примеры запросов
Чтобы вывести книги на сайте, например, на специальной странице, можно использовать WP_Query с указанием нашего типа поста:
$args = array(
'post_type' => 'wplancer_book',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC'
);
$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>';
wp_reset_postdata();
} else {
echo 'Книги не найдены';
}Этот код можно вставить в шаблон страницы или в файл темы, чтобы вывести список последних книг с ссылками.
Вывод по жанрам — пример с таксономией
Для вывода книг определённого жанра используйте параметр tax_query:
$args = array(
'post_type' => 'wplancer_book',
'tax_query' => array(
array(
'taxonomy' => 'wplancer_genre',
'field' => 'slug',
'terms' => 'fantasy'
)
)
);
$query = new WP_Query($args);Замените 'fantasy' на нужный слаг жанра. Так можно гибко фильтровать записи.
Советы по работе с кастомными типами постов и совместимость с плагинами
Хотя кастомные типы постов можно добавлять вручную, иногда удобнее использовать плагины, которые предоставляют интерфейс для управления CPT. Но ручной способ даёт полный контроль и не нагружает сайт лишним кодом.
Для автоматизации и оптимизации можно использовать плагины типа Clearfy Pro, которые помогают управлять и оптимизировать работу сайта, в том числе с CPT.
Также обратите внимание на совместимость своих кастомных типов с SEO-плагинами, плагинами кеширования и импорт/экспортом контента.
Резюме и полезные рекомендации
Добавление кастомных типов постов без плагинов — важный навык для разработчика WordPress. Это позволяет создавать гибкие и уникальные решения под задачи проекта. Главное — внимательно прописать параметры в register_post_type() и протестировать интерфейс в админке.
Не забывайте использовать таксономии для удобной классификации и добавлять поддержку нужных функций через supports. При необходимости комбинируйте ручное создание с проверенными плагинами для расширения возможностей.
Если вы хотите быстро создать и настроить кастомные типы постов с удобным интерфейсом, можно рассмотреть плагины с поддержкой, например, Expert Review, которые помогут организовать отзывы и обзоры на сайте.