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