В современных проектах на WordPress часто возникает задача ускорить создание контента для редактора Gutenberg. Особенно актуально это для сайтов, которые используют большое количество повторяющихся блоков с текстом, например, описания товаров, обзоры, новости и т.п. В этой статье подробно рассмотрим, как создать автоматический генератор текстов для блоков Gutenberg с помощью AI, используя возможности WordPress и популярные AI-интеграции.
Почему автоматический генератор текстов для Gutenberg востребован
Редактор Gutenberg построен на блоках, и для наполнения сайта контентом зачастую требуется много времени. Автоматизация процесса генерации текста поможет:
- Сократить время на создание контента;
- Обеспечить единообразие и качество текстов;
- Интегрировать AI-поддержку непосредственно в редактор;
- Облегчить работу редакторов и контент-менеджеров.
Реализация такого функционала может базироваться на API современных AI-сервисов, например, OpenAI, или использовать готовые плагины с AI-моделями.
Обзор плагинов для AI-генерации текста в WordPress
Для расширения редактора Gutenberg можно использовать плагины, которые интегрируют AI прямо в панель администратора:
- WPGPT — плагин для генерации текстов с помощью GPT-моделей. Позволяет быстро создать тексты на основе заданных тем и подсказок.
- Clearfy Pro — содержит оптимизации и инструменты для улучшения работы AI и генерации контента.
- Expert Review — помогает анализировать и улучшать текст, сгенерированный AI, прямо в админке.
Для автоматического наполнения блоков Gutenberg можно написать собственное расширение с использованием API WPGPT или OpenAI.
Создаем свой генератор текста для блоков Gutenberg с AI
Регистрация кастомного блока Gutenberg
Для начала создадим свой блок, который будет содержать кнопку генерации текста. В функции и названиях используем префикс wpai_ для уникальности.
function wpai_register_block() {
wp_register_script('wpai-block-script', plugins_url('block.js', __FILE__), array('wp-blocks','wp-element','wp-editor','wp-components'));
register_block_type('wpai/ai-text-generator', array(
'editor_script' => 'wpai-block-script',
));
}
add_action('init', 'wpai_register_block');В файле block.js опишем интерфейс блока с кнопкой и областью вывода текста.
Интеграция с AI через AJAX
Для генерации текста используем AJAX-запрос с передачей темы и получением результата от AI-сервиса. Пример серверного обработчика:
function wpai_generate_text_callback() {
$prompt = sanitize_text_field($_POST['prompt']);
if (empty($prompt)) {
wp_send_json_error('Пустой запрос');
}
// Пример обращения к OpenAI API
$api_key = 'ВАШ_API_КЛЮЧ';
$data = array(
'model' => 'gpt-4',
'messages' => array(
array('role' => 'user', 'content' => $prompt),
),
'max_tokens' => 500,
);
$response = wp_remote_post('https://api.openai.com/v1/chat/completions', array(
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $api_key,
),
'body' => json_encode($data),
));
if (is_wp_error($response)) {
wp_send_json_error('Ошибка запроса к AI');
}
$body = json_decode(wp_remote_retrieve_body($response), true);
if (!empty($body['choices'][0]['message']['content'])) {
wp_send_json_success($body['choices'][0]['message']['content']);
} else {
wp_send_json_error('Нет ответа от AI');
}
}
add_action('wp_ajax_wpai_generate_text', 'wpai_generate_text_callback');В JavaScript вызов AJAX и обновление блока:
const { registerBlockType } = wp.blocks;
const { Button, TextareaControl } = wp.components;
const { useState } = wp.element;
registerBlockType('wpai/ai-text-generator', {
title: 'AI Генератор текста',
icon: 'edit',
category: 'widgets',
edit: (props) => {
const [prompt, setPrompt] = useState('');
const [generatedText, setGeneratedText] = useState('');
const generateText = () => {
wp.apiFetch({
path: '/wp-admin/admin-ajax.php?action=wpai_generate_text',
method: 'POST',
data: { prompt: prompt },
}).then((response) => {
if (response.success) {
setGeneratedText(response.data);
props.setAttributes({ content: response.data });
} else {
alert('Ошибка генерации: ' + response.data);
}
});
};
return (
<div>
<TextareaControl
label="Тема для генерации"
value={prompt}
onChange={(value) => setPrompt(value)}
/>
<Button isPrimary onClick={generateText}>Сгенерировать текст</Button>
<div style={{ marginTop: '10px', whiteSpace: 'pre-wrap' }}>{generatedText}</div>
</div>
);
},
save: (props) => {
return <p>{props.attributes.content}</p>;
},
});Практические советы по улучшению генератора
Оптимизация запросов к AI
Для снижения нагрузки стоит кэшировать ответы и ограничивать длину запросов. Это позволит не перегружать API и ускорит работу генератора.
Можно использовать transient-хранение WordPress:
function wpai_get_cached_or_generate($prompt) {
$cache_key = 'wpai_cache_' . md5($prompt);
$cached = get_transient($cache_key);
if ($cached !== false) {
return $cached;
}
$generated = wpai_call_openai_api($prompt); // Ваша функция запроса
if ($generated) {
set_transient($cache_key, $generated, 12 * HOUR_IN_SECONDS);
}
return $generated;
}Добавление параметров генерации
Добавляйте в блок дополнительные настройки, например, стиль текста, тональность, длину. Это можно реализовать через дополнительные поля в редакторе с передачей в prompt AI.
Интеграция с плагином WPGPT
Если вы используете плагин WPGPT, то можно использовать его API для генерации текста, что упростит разработку и обеспечит стабильную работу.
Примеры использования и сценарии
Такой генератор подходит для:
- Автоматического создания описаний товаров в WooCommerce;
- Генерации текстов для новостных блоков и анонсов;
- Помощи редакторам при создании уникального контента;
- Наполнения лендингов и промо-блоков быстро и эффективно.
Вы можете встроить генератор в шаблоны тем или использовать его в качестве отдельного инструмента для редакторов.