wpcorp.ru wordpress WP Corp

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

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

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

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

  • Разграничить разные виды контента.
  • Упростить управление и вывод информации.
  • Настроить отдельные шаблоны для отображения.
  • Оптимизировать SEO по целевым запросам.

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

Регистрация собственного типа записи: базовый пример

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

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

    $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',
        'capability_type' => 'post',
    );

    register_post_type('wpcorp_projects', $args);
}
add_action('init', 'wpcorp_register_cpt_projects');

Обратите внимание, что префикс wpcorp_ в названии функции и типа записи помогает избежать конфликтов с другими плагинами и темами.

Параметры регистрации CPT: что важно учитывать

Разберём ключевые параметры массива $args подробнее:

  • public — доступность типа записи на фронтенде и в админке.
  • has_archive — включение архивной страницы для типа записи.
  • rewrite — настройки ЧПУ (человеко-понятного URL). Можно задать slug, чтобы адреса выглядели как site.ru/projects/project-name.
  • supports — список элементов, которые поддерживаются (заголовок, редактор, миниатюры, отзывы и т.д.).
  • show_in_rest — обязательный параметр для поддержки редактора Gutenberg и REST API.
  • menu_icon — иконка в меню админки, выбирайте из Dashicons.

Правильная настройка этих параметров — залог удобства для администраторов и корректного отображения на сайте.

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

Для удобной категоризации проектов можно добавить собственные таксономии — например, «Тип проекта» или «Технологии». Это аналог рубрик и меток, но для вашего CPT.

function wpcorp_register_taxonomies() {
    register_taxonomy('project_type', 'wpcorp_projects', array(
        'labels' => array(
            'name' => 'Типы проектов',
            'singular_name' => 'Тип проекта',
            'search_items' => 'Поиск типов проектов',
            'all_items' => 'Все типы проектов',
            'edit_item' => 'Редактировать тип проекта',
            'add_new_item' => 'Добавить новый тип проекта',
        ),
        'hierarchical' => true, // как категории
        'show_in_rest' => true,
        'rewrite' => array('slug' => 'project-type'),
    ));
}
add_action('init', 'wpcorp_register_taxonomies');

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

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

Чтобы вывести список проектов на странице, можно использовать WP_Query с указанием типа записи:

$args = array(
    'post_type' => 'wpcorp_projects',
    'posts_per_page' => 10,
);
$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 'Проекты не найдены';
}

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

Советы по SEO и производительности для собственных типов записей

Для повышения SEO-эффективности CPT рекомендуется:

  • Использовать ЧПУ с осмысленными slug — это важно для индексации.
  • Добавлять мета-описания и заголовки через SEO-плагины (например, SEO by WPCorp).
  • Оптимизировать запросы с помощью правильных аргументов WP_Query.
  • Подключать к CPT XML-карты сайта и открывать индексацию для поисковиков.

Для очистки и оптимизации базы данных, связанной с CPT, можно использовать плагин Clearfy Pro, который помогает убрать мусор и ускорить работу сайта.

Дополнительно: создание шаблонов для собственного типа записи

Чтобы отображать проекты с уникальным дизайном, создайте файл шаблона в теме с именем single-wpcorp_projects.php для отдельной записи и archive-wpcorp_projects.php для архива. В этих файлах можно использовать обычные функции WordPress для вывода полей, например:

<?php
if(have_posts()) :
    while(have_posts()) : the_post();
        the_title('<h1>', '</h1>');
        the_content();
        // Вывод миниатюры
        if(has_post_thumbnail()) {
            the_post_thumbnail('large');
        }
    endwhile;
endif;
?>

Так вы получите полный контроль над видом страниц с вашим CPT.

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

Если вы не хотите писать код, можно использовать плагины типа Custom Post Type UI или Toolset. Однако для максимальной производительности и гибкости лучше писать регистрацию CPT вручную. Это также облегчает перенос и поддержку проекта.

Для более продвинутых задач можно использовать плагин Expert Review от WPSHOP, который помогает создавать расширенные поля и настраивать вывод контента.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙