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

В современных проектах на WordPress часто требуется создавать собственные типы записей (Custom Post Types) для более гибкой организации контента. Однако если создавать их вручную через код в functions.php или отдельном плагине, то можно потратить много времени, особенно если таких типов много и часто меняются требования. В этой статье мы подробно разберем, как автоматизировать создание собственных типов записей в WordPress, используя как программные методы, так и удобные плагины, а также приведем примеры кода с префиксом wpguest.

Почему стоит автоматизировать создание Custom Post Types в WordPress

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

Автоматизация позволяет:

  • Экономить время на повторяющихся операциях.
  • Обеспечивать единообразие настроек всех типов записей.
  • Облегчать управление типами записей для менее технических пользователей.
  • Уменьшать вероятность ошибок при ручном кодировании.

Далее рассмотрим несколько подходов для автоматизации и оптимизации процесса.

Ручная регистрация с функцией wpguest_register_custom_post_type

Если хочется оставить код, но сделать его более универсальным и переиспользуемым, можно написать свою функцию-обёртку. Например, функция wpguest_register_custom_post_type принимает массив параметров и регистрирует тип записи с базовыми настройками.

function wpguest_register_custom_post_type($slug, $args = []) {
    $labels = [
        'name' => $args['name'] ?? ucfirst($slug) . 's',
        'singular_name' => $args['singular_name'] ?? ucfirst($slug),
        'menu_name' => $args['menu_name'] ?? ucfirst($slug) . 's',
        'name_admin_bar' => $args['name_admin_bar'] ?? ucfirst($slug),
    ];

    $default_args = [
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'show_in_rest' => true,
        'supports' => ['title', 'editor', 'thumbnail'],
    ];

    $final_args = array_merge($default_args, $args);
    register_post_type($slug, $final_args);
}

// Пример использования:
add_action('init', function() {
    wpguest_register_custom_post_type('book', [
        'name' => 'Книги',
        'singular_name' => 'Книга',
        'menu_name' => 'Книги',
        'supports' => ['title', 'editor', 'thumbnail', 'comments'],
        'taxonomies' => ['category', 'post_tag'],
    ]);
});

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

Использование плагина Custom Post Type UI для визуального создания CPT

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

Преимущества:

  • Удобный интерфейс без необходимости писать код.
  • Экспорт и импорт настроек в JSON для переноса между сайтами.
  • Поддержка всех основных параметров регистрации.

Недостаток — зависимость от плагина и отсутствие гибкости для сложной логики. Тем не менее, для большинства проектов это оптимальный способ.

Как использовать Custom Post Type UI

После установки плагина в меню появится раздел «CPT UI». Там выбираем «Добавить/изменить тип записи», вводим слаг, название, описание, настраиваем поддерживаемые поля и таксономии, а затем сохраняем.

Для автоматизации процесса можно подготовить JSON-файл с конфигурациями и импортировать их на других сайтах.

Автоматизация с помощью плагина WPGPT и пользовательских шаблонов

Если вы используете плагин WPGPT, то можно интегрировать генерацию описаний и контента для новых типов записей с помощью GPT-3/4. Это позволяет не только создавать типы, но и автоматически наполнять их уникальным контентом.

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

Пример кода для автоматической генерации описания книги при сохранении записи

add_action('save_post_book', 'wpguest_generate_book_description', 10, 3);
function wpguest_generate_book_description($post_ID, $post, $update) {
    if ($update) return; // Генерируем только при создании

    if (get_post_meta($post_ID, '_wpguest_generated_description', true)) return;

    $title = get_the_title($post_ID);

    // Здесь вызываем API WPGPT - пример псевдокода
    $description = wpguest_wpgpt_generate_text("Создай описание книги с названием: $title");

    if ($description) {
        wp_update_post([
            'ID' => $post_ID,
            'post_content' => $description,
        ]);
        update_post_meta($post_ID, '_wpguest_generated_description', 1);
    }
}

Такой подход автоматизирует не только создание типа записи, но и наполнение его контентом.

Создание пользовательского интерфейса для массового создания CPT в админке

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

Пример простейшей формы и обработки:

add_action('admin_menu', function() {
    add_menu_page('Создать CPT', 'Создать CPT', 'manage_options', 'wpguest-create-cpt', 'wpguest_create_cpt_page');
});

function wpguest_create_cpt_page() {
    if ($_POST['wpguest_cpt_nonce'] && wp_verify_nonce($_POST['wpguest_cpt_nonce'], 'wpguest_create_cpt')) {
        $slug = sanitize_key($_POST['slug']);
        $name = sanitize_text_field($_POST['name']);

        // Сохраняем настройки в опцию, чтобы зарегистрировать позже
        $types = get_option('wpguest_custom_post_types', []);
        $types[$slug] = ['name' => $name];
        update_option('wpguest_custom_post_types', $types);

        echo '<div class="notice notice-success">Тип записи создан. Обновите страницу.</div>';
    }
    ?>
    <form method="post">
        <label>Слаг (slug):</label>
        <input type="text" name="slug" required />
        <br />
        <label>Название (множественное число):</label>
        <input type="text" name="name" required />
        <br />
        <input type="hidden" name="wpguest_cpt_nonce" value="<?php echo wp_create_nonce('wpguest_create_cpt'); ?>" />
        <input type="submit" value="Создать тип записи" />
    </form>
    <?php
}

add_action('init', function() {
    $types = get_option('wpguest_custom_post_types', []);
    foreach ($types as $slug => $args) {
        wpguest_register_custom_post_type($slug, [
            'name' => $args['name'] ?? ucfirst($slug) . 's',
        ]);
    }
});

Такой подход требует базовых знаний PHP, но значительно упрощает процесс создания и управления CPT для администраторов.

Как интегрировать автоматические типы записей с темами Reboot и Root

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

Для их использования достаточно создать в теме папку single-{slug}.php и archive-{slug}.php, где {slug} — слаг типа записи. В этих файлах можно использовать стандартные WordPress-функции для вывода контента, а темы обеспечат стили и адаптивность.

Итоги и рекомендации

Автоматизация создания собственных типов записей в WordPress существенно ускоряет разработку и упрощает поддержку сайта. Для этого можно:

  • Использовать собственные функции-обертки с префиксом wpguest_ для быстрой регистрации типов.
  • Применять плагин Custom Post Type UI для визуального управления.
  • Интегрировать генерацию контента с помощью WPGPT для автоматического наполнения.
  • Разработать собственный админский интерфейс для массового создания и редактирования типов.
  • Использовать возможности тем Reboot и Root для вывода кастомных записей.

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

Как автоматизировать удаление старых ревизий записей в WordPress
12.03.2026
Как автоматизировать удаление устаревших transient в WordPress
07.03.2026
Как установить ограничение на размер файлов при загрузке в WordPress
10.01.2026
Автоматизация обновления тем и удаление старых ревизий в WordPress
21.03.2026
Как удалить заблокированных пользователей в WordPress с помощью кода
07.01.2026