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

В 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 и сделать сайт более функциональным и удобным для пользователей. Используйте приведенные примеры, адаптируйте их под свои задачи и расширяйте функционал по мере необходимости.

Как создать и использовать AJAX в WordPress: подробное руководство с примерами
17.11.2025
Как избежать конфликтов между плагинами в WordPress: практические методы и примеры
07.12.2025
WordPress: как изменить URL авторской страницы
13.11.2025
Как добавить уникальные метатеги для каждого типа записи в WordPress
21.12.2025
Как настроить производительность WordPress на уровне кода
03.12.2025