Интеграция AI в WordPress через AI Gateway: сниппет на PHP
Как подключить AI к WordPress без сторонних плагинов: сниппет на PHP с wp_remote_post к API AI Gateway, автогенерация описаний товаров и записей, ключ в wp-config или окружении.
Добавить AI в WordPress можно без тяжёлых плагинов — коротким сниппетом на PHP. Встроенная функция wp_remote_post отправляет запрос к OpenAI-совместимому API AI Gateway, а ответ используется для генерации описаний товаров, аннотаций записей или ответов на комментарии. Модели берём из каталога.
Подготовка
Нужен ключ AI Gateway sk-aigate-… и базовый URL https://ai-gatewey.ru/v1. Ключ задайте константой в wp-config.php или через переменную окружения сервера — не в теле темы или плагина. Код кладите в mu-plugins или отдельный плагин, а не в functions.php темы (переживёт смену темы).
Реализация
- Функция обращения к модели
Обёртка над
wp_remote_post: шлёт промпт на AI Gateway и возвращает текст ответа. Ключ читается из константы:phpphp<?php// wp-content/mu-plugins/aigate.phpfunction aigate_generate($prompt, $model = 'deepseek/deepseek-v4-flash') {$res = wp_remote_post('https://ai-gatewey.ru/v1/chat/completions', ['timeout' => 60,'headers' => ['Authorization' => 'Bearer ' . AIGATE_API_KEY,'Content-Type' => 'application/json',],'body' => wp_json_encode(['model' => $model,'messages' => [['role' => 'user', 'content' => $prompt],],]),]);if (is_wp_error($res)) {return '';}$data = json_decode(wp_remote_retrieve_body($res), true);return $data['choices'][0]['message']['content'] ?? '';} - Ключ в wp-config.php
Секрет держим отдельно от кода плагина — константой в конфиге (выше строки «That's all, stop editing»):
phpphpdefine('AIGATE_API_KEY', 'sk-aigate-ваш_ключ'); - Автогенерация описания товара
На сохранение товара WooCommerce формируем краткое описание, если его ещё нет. Флаг ставим ДО
wp_update_post, иначе вызов сам подниметsave_postи уйдёт в рекурсию — на момент вложенного вызова флаг ещё не записан:phpphpadd_action('save_post_product', function ($post_id) {if (has_excerpt($post_id) || get_post_meta($post_id, '_aigate_done', true)) {return;}update_post_meta($post_id, '_aigate_done', 1);$title = get_the_title($post_id);$text = aigate_generate("Напиши короткое продающее описание товара: {$title}");if ($text) {wp_update_post(['ID' => $post_id, 'post_excerpt' => $text]);}}, 20);
wp-config.php или в переменной окружения — не в коде темы и не в полях админки, доступных из браузера. Запрос к модели небыстрый: в хуках сохранения ставьте разумный timeout и по возможности выносите генерацию в WP-Cron или фоновую задачу.Какие модели подойдут
Для массовой генерации описаний и аннотаций берут быструю недорогую модель; для важных текстов можно точечно подключить флагман:
Частые вопросы
Нужен ли сторонний AI-плагин?
Нет. Встроенной wp_remote_post достаточно, чтобы обратиться к любому OpenAI-совместимому API. Свой сниппет прозрачнее и не тянет лишних зависимостей, а ключ остаётся под вашим контролем.
Куда положить код — в functions.php?
Лучше в отдельный плагин или каталог mu-plugins: тогда логика переживёт смену темы и обновления. functions.php темы подходит только для быстрой пробы.
Как не сгенерировать описание дважды?
Ставьте флаг в мете поста (update_post_meta) после успешной генерации и проверяйте его в начале хука. Так повторное сохранение записи не приведёт к лишним запросам и расходу.