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

В WordPress стандартно доступны типы записей «Записи» и «Страницы», но для многих проектов необходимы дополнительные типы записей (Custom Post Types), чтобы структурировать контент более удобно и логично. В этой статье подробно разберём, как создать собственный тип записи в WordPress с нуля, используя PHP-код, и рассмотрим примеры для практического использования.

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

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

Основные преимущества использования собственных типов записей:

  • Чёткое разделение контента по категориям.
  • Возможность создавать отдельные шаблоны отображения.
  • Улучшение SEO за счёт структурирования.
  • Легкость интеграции с плагинами и кастомными таксономиями.

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

Для создания собственного типа записи используется функция register_post_type(), которую нужно вызвать в хуке init. Рассмотрим пример создания типа записи «Кейсы» для демонстрации реализованных проектов.

function wpstandart_register_post_type_cases() {
    $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,
        'menu_icon'          => 'dashicons-portfolio',
        'supports'           => array('title', 'editor', 'thumbnail', 'excerpt', 'custom-fields'),
        'rewrite'            => array('slug' => 'cases'),
        'show_in_rest'       => true // Для поддержки Gutenberg
    );

    register_post_type('wpstandart_cases', $args);
}
add_action('init', 'wpstandart_register_post_type_cases');

В этом примере создан тип записи wpstandart_cases с набором параметров и лейблов. Параметр show_in_rest нужен для поддержки редактора Gutenberg и API REST.

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

Чтобы сделать тип записи более функциональным и удобным для фильтрации, стоит добавить кастомные таксономии — категории и теги, например, для «Кейсов» можно создать таксономию «Тип кейса».

function wpstandart_register_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' => 'case-type'),
        'show_in_rest'      => true
    );

    register_taxonomy('wpstandart_case_type', array('wpstandart_cases'), $args);
}
add_action('init', 'wpstandart_register_taxonomies');

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

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

После создания типа записи и таксономий необходимо вывести их на сайте. Для этого можно создать отдельный шаблон архива, например archive-wpstandart_cases.php в теме. Вот пример базового запроса для вывода всех кейсов:

<?php
$args = array(
    'post_type'      => 'wpstandart_cases',
    'posts_per_page' => 10
);
$query = new WP_Query($args);
if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post(); ?>
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <div><?php the_excerpt(); ?></div>
    <?php endwhile; wp_reset_postdata();
else :
    echo '<p>Кейсы не найдены.</p>';
endif;
?>

Такой код можно вставлять в шаблон или в кастомный шорткод для вывода списка кейсов на любой странице.

Плагины для расширения функционала собственных типов записей

Если хочется упростить работу с кастомными типами записей, стоит обратить внимание на плагины, которые позволяют создавать и настраивать их без кода:

  • Custom Post Type UI — удобный интерфейс для создания CPT и таксономий.
  • Advanced Custom Fields (ACF) — добавляет удобные поля для расширения данных типа записи.
  • Pods — комплексное решение для кастомизации контента и пользовательских полей.

Например, после создания CPT «Кейсы» с помощью Custom Post Type UI можно добавить поля через ACF Pro и выводить их в шаблонах.

Советы и лучшие практики при работе с собственными типами записей

Чтобы разработка и поддержка собственного типа записи проходила гладко, стоит учитывать следующие моменты:

  • Используйте префиксы в названиях функций и типов записи, чтобы избежать конфликтов (как wpstandart_ в примерах).
  • Добавляйте поддержку REST API (show_in_rest = true) для совместимости с Gutenberg и внешними сервисами.
  • Создавайте шаблоны в теме для кастомного отображения (например, single-wpstandart_cases.php и archive-wpstandart_cases.php).
  • Оптимизируйте запросы и кэшируйте результаты при большом объёме данных.
  • Используйте возможность добавлять мета-поля и таксономии для расширения функционала.

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

Как создать собственный шорткод в WordPress с примером кода
02.11.2025
Как автоматизировать удаление старых черновиков в WordPress
14.04.2026
Автоудаление заказов WooCommerce по статусу и времени: практическое руководство
05.06.2026
Как избежать проблем с перенаправлением после смены домена в WordPress
24.04.2026
Как избежать проблемы с передачей данных в WordPress: практические советы
18.03.2026