Как добавить дополнительные типы постов в WordPress без плагинов

В 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, которые помогут организовать отзывы и обзоры на сайте.

Как автоматизировать создание и удаление чистокодов в WordPress
17.02.2026
Как создать адаптивный слайдер в WordPress с нуля
30.11.2025
Как удалить изображения без использования в WordPress
31.05.2026
Как создать многоуровневую навигацию в WordPress: подробное руководство
10.01.2026
Как удалить неиспользуемые мета-теги в WordPress для оптимизации сайта
18.11.2025