Создать и использовать собственные типы записей в WordPress

В WordPress по умолчанию доступны несколько типов записей: записи (posts), страницы (pages), вложения (attachments), ревизии и меню. Однако для расширения функциональности сайта часто нужно создавать собственные типы записей (Custom Post Types, CPT), которые позволяют структурировать контент более гибко и удобно. В этой статье мы подробно разберем, как создать и использовать собственные типы записей в WordPress, а также приведем примеры кода и советы по работе с ними.

Что такое собственные типы записей в WordPress и зачем они нужны

Собственные типы записей — это пользовательские сущности, которые вы можете добавить в WordPress для хранения и отображения контента, отличного от стандартных записей и страниц. Например, если вы создаете сайт с каталогом товаров, отзывами, портфолио или мероприятиями, то собственные типы записей помогут логично разделить эти данные, облегчить их управление и вывод на сайте.

Преимущества использования CPT:

  • Удобное разделение контента по смыслу.
  • Возможность добавлять собственные поля и таксономии.
  • Улучшение SEO за счет правильной структуры URL и метаданных.
  • Гибкая настройка отображения в админке и на фронтенде.

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

Для регистрации CPT используется функция register_post_type(). Лучше всего добавлять регистрацию в файл functions.php вашей темы или в собственный плагин, чтобы не потерять изменения при обновлении темы.

Пример регистрации типа записи «Отзывы» с базовой настройкой:

add_action('init', 'wpfix_register_post_type_reviews');
function wpfix_register_post_type_reviews() {
    $labels = array(
        'name'               => 'Отзывы',
        'singular_name'      => 'Отзыв',
        'menu_name'          => 'Отзывы',
        'name_admin_bar'     => 'Отзыв',
        'add_new'            => 'Добавить отзыв',
        'add_new_item'       => 'Добавить новый отзыв',
        'edit_item'          => 'Редактировать отзыв',
        'new_item'           => 'Новый отзыв',
        'view_item'          => 'Посмотреть отзыв',
        'search_items'       => 'Искать отзывы',
        'not_found'          => 'Отзывы не найдены',
        'not_found_in_trash' => 'В корзине отзывы не найдены',
    );

    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'has_archive'        => true,
        'rewrite'            => array('slug' => 'otzyvy'),
        'show_in_rest'       => true, // поддержка Gutenberg
        'supports'           => array('title', 'editor', 'author', 'thumbnail', 'comments'),
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-testimonial',
    );

    register_post_type('wpfix_reviews', $args);
}

В этом примере мы создали тип записи с идентификатором wpfix_reviews, который будет отображаться в админ-панели под названием «Отзывы» с удобными метками и иконкой.

Объяснение параметров функции register_post_type

  • labels — массив с текстами для разных элементов интерфейса.
  • public — делает тип записи общедоступным (для фронтенда и админки).
  • has_archive — включает архивную страницу для CPT.
  • rewrite — управление URL, чтобы ссылки выглядели красиво (например, site.ru/otzyvy/).
  • show_in_rest — поддержка редактора Gutenberg и REST API.
  • supports — какие стандартные функции будут доступны (заголовок, редактор, миниатюры и т.д.).
  • menu_position и menu_icon — позиция и иконка в меню админки.

Добавление пользовательских таксономий для собственного типа записей

Для удобной категоризации записей часто нужны собственные таксономии (например, категории и метки для стандартных записей). Создадим таксономию «Тип отзыва» для нашего CPT «Отзывы».

add_action('init', 'wpfix_register_taxonomy_review_type');
function wpfix_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_in_rest'      => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array('slug' => 'tip-otzyva'),
    );

    register_taxonomy('wpfix_review_type', array('wpfix_reviews'), $args);
}

Теперь при создании отзыва вы сможете указывать его тип, что упростит фильтрацию и вывод материалов на сайте.

Вывод собственных записей на фронтенде

Чтобы вывести записи CPT на сайте, можно использовать класс WP_Query. Пример запроса и вывода отзывов в шаблоне:

$args = array(
    'post_type'      => 'wpfix_reviews',
    'posts_per_page' => 5,
    'orderby'        => 'date',
    'order'          => 'DESC',
);

$reviews_query = new WP_Query($args);

if ($reviews_query->have_posts()) {
    echo '<ul class="wpfix-reviews-list">';
    while ($reviews_query->have_posts()) {
        $reviews_query->the_post();
        echo '<li><h3>' . get_the_title() . '</h3>';
        echo '<div class="content">' . get_the_content() . '</div>';
        echo '</li>';
    }
    echo '</ul>';
    wp_reset_postdata();
} else {
    echo '<p>Отзывы не найдены.</p>';
}

Такой код можно вставить в любой шаблон темы, чтобы вывести последние 5 отзывов в удобном формате.

Фильтрация по таксономии

Если нужно вывести отзывы определенного типа, добавьте параметр tax_query:

$args = array(
    'post_type' => 'wpfix_reviews',
    'tax_query' => array(
        array(
            'taxonomy' => 'wpfix_review_type',
            'field'    => 'slug',
            'terms'    => 'pozitivnye',
        ),
    ),
);

Использование плагинов для создания и управления CPT

Если вы не хотите писать код или хотите расширенные возможности, можно использовать плагины. Среди популярных решений:

  • WPFix Custom Post Type — легкий и удобный плагин для создания CPT и таксономий с визуальным интерфейсом.
  • Custom Post Type UI — бесплатный плагин для управления типами записей и таксономиями без кода.
  • Clearfy Pro — оптимизирует работу WordPress и позволяет управлять CPT и другими настройками сайта.

Важно: советы по работе с собственными типами записей

Чтобы избежать проблем и получить максимум пользы от CPT, следуйте рекомендациям:

  • Используйте уникальные префиксы для идентификаторов (например, wpfix_), чтобы избежать конфликтов с другими плагинами.
  • Поддерживайте совместимость с REST API, ставьте show_in_rest => true, чтобы Gutenberg и сторонние приложения могли работать с CPT.
  • Регулярно обновляйте правила перезаписи ссылок — после регистрации CPT зайдите в админке в Настройки > Постоянные ссылки и нажмите «Сохранить изменения».
  • Продумывайте структуру таксономий, чтобы они логично отражали типы и категории контента.
  • Для сложных проектов создавайте отдельный плагин для CPT, а не прописывайте код в теме.
Оптимизация базы данных WordPress: как ускорить сайт и снизить нагрузку
15.11.2025
Использование функции wp_upload_dir() для хранения файлов в WordPress
22.12.2025
Как удалить все комментарии в WordPress с помощью кода
18.11.2025
Как установить ограничение на размер и тип файлов при загрузке в WordPress
13.01.2026
Как создать собственный плагин WordPress с названием WPFix: пошаговое руководство
26.11.2025