SmartyPress AI Engine Documentation Article

Хуки, фильтры и REST API

Фильтры WordPress для промптов, параметров и пользовательских действий. Полный справочник REST API.

Хуки, фильтры и REST API — тема этой страницы документации. Фильтры WordPress для промптов, параметров и пользовательских действий. Полный справочник REST API. Ниже — как настроить возможности и использовать их в рабочем процессе WordPress.

SmartyPress AI Engine предоставляет разработчикам фильтры и действия WordPress, REST API и один JavaScript-фильтр для кастомизации и расширения плагина.

Ключевые фильтры

smartypress_ai_prompt_{action}

Настройте промпт для любого действия волшебной палочки. Фильтр получает собранный промпт и аргументы.

add_filter( 'smartypress_ai_prompt_generateTitle', function( $prompt, $arguments ) { return 'Create a clickable, SEO title (max 60 chars) for: ' . ($arguments['context'] ?? '');
}, 10, 2 );

smartypress_ai_wand_params

Измените параметры генерации ИИ (temperature, max_tokens, model) для действий волшебной палочки.

add_filter( 'smartypress_ai_wand_params', function( $params, $action ) { if ( $action === 'enhanceText' ) { $params['temperature'] = 0.5; $params['max_tokens'] = 3000; } return $params;
}, 10, 2 );

smartypress_ai_wand_features

Добавьте собственные действия волшебной палочки или измените существующие.

add_filter( 'smartypress_ai_wand_features', function( $features ) { $features['generateFAQ'] = array( 'label' => 'Generate FAQ', 'sublabel' => 'Q&A Section', 'arguments' => array( 'postId', 'text', 'prompt' ), 'where' => 'blockContext', 'mode' => 'replace', 'default_prompt' => 'Generate 5 FAQ items based on: {TEXT}', 'placeholder' => 'Enter topic...', ); return $features;
} );

Фильтры контент-плана

Генерация по плану выполняется в два шага ИИ — построение редактируемой структуры плана, затем наполнение контентом — плюс опциональная генерация по разделам. У каждого шага свой фильтр.

  • smartypress_ai_content_plan_schema_request_params — изменить параметры запроса к ИИ для построения редактируемой структуры плана (фаза 1)
  • smartypress_ai_content_plan_prompt — изменить промпт наполнения плана контентом (фаза 2)
  • smartypress_ai_content_plan_request_params — добавить параметры к API-запросу наполнения плана на фазе 2
  • smartypress_ai_content_plan_seo_analysis_enabled — управлять тем, подключается ли исследование конкурентов из модуля SEO Analysis к плану

После наполнения плана Content Generator также вызывает действие smartypress_ai_content_plan_research_generated, когда к плану были прикреплены данные исследования конкурентов (заголовки или ключевые слова). Модуль SEO Analysis слушает это действие, чтобы логировать использование исследования; его можно использовать для синхронизации данных исследования с внешней системой.

add_filter( 'smartypress_ai_content_plan_seo_analysis_enabled', function( $enabled, $provider_name, $model, $plan_context ) { // Only attach competitor research when OpenRouter is selected. return 'openrouter' === $provider_name;
}, 10, 4 ); add_action( 'smartypress_ai_content_plan_research_generated', function( $plan, $plan_context ) { error_log( 'Plan research attached for topic: ' . ( $plan_context['topic'] ?? '' ) );
}, 10, 2 );

Хуки расширения генерации контента

Массовая генерация для типов записей со специальными полями (например, товары WooCommerce) построена на небольшом интерфейсе расширения SmartyPress_AI_Post_Type_Extension_Interface. Зарегистрируйте расширение через smartypress_ai_content_post_type_extensions — реестр вызывает его на каждом шаге генерации для подходящих типов записей.

add_filter( 'smartypress_ai_content_post_type_extensions', function( array $extensions ) { $extensions[] = new My_Custom_Post_Type_Extension(); return $extensions;
} );

После регистрации расширения вокруг него для каждого сгенерированного элемента срабатывают эти обычные фильтры и одно действие:

  • smartypress_ai_content_generation_rules — изменить объединённые правила генерации (подсказки промпта) для типа записи
  • smartypress_ai_content_seo_rules — изменить объединённые SEO-правила для типа записи
  • smartypress_ai_content_item_context — изменить дополнительный текст контекста, который добавляется в промпт генерации для элемента очереди
  • smartypress_ai_content_prepared_post_data — изменить поля записи прямо перед вызовом wp_insert_post()
  • smartypress_ai_content_after_post_persisted — действие, срабатывает после сохранения сгенерированной записи и метаданных расширения

Фильтры SEO-метаданных

Эти фильтры применяются, когда Content Generator записывает SEO-метаданные (заголовок, описание, ярлык, ключевое слово) для новой сгенерированной записи — одиночной, массовой или по плану — независимо от активного SEO-плагина.

smartypress_ai_seo_metadata_before_write

Измените SEO-метаданные (заголовок, описание, ярлык, ключевое слово) до сохранения в запись.

add_filter( 'smartypress_ai_seo_metadata_before_write', function( $metadata, $post_id ) { // Ensure brand name is always in the SEO title if ( strpos( $metadata['title'], 'MyBrand' ) === false ) { $metadata['title'] .= ' | MyBrand'; } return $metadata;
}, 10, 2 );
  • smartypress_ai_seo_metadata_adapters — добавить, удалить или заменить адаптеры SEO-плагинов, которые получают сгенерированные метаданные (встроенные: ярлык WordPress, Rank Math, Yoast SEO, AIOSEO)
  • smartypress_ai_seo_metadata_adapter_enabled — включить или отключить конкретный адаптер для данной записи
  • smartypress_ai_bulk_seo_optimization_prompt — изменить промпт ИИ для генерации SEO-метаданных при массовой/legacy-генерации
  • smartypress_ai_bulk_seo_optimization_enabled — отключить шаг SEO-метаданных на ИИ при массовой/legacy-генерации
  • smartypress_ai_seo_content_deterministic_fallback_enabled — отключить не-ИИ fallback расстановки ключевых слов, когда метаданные на ИИ ненадёжны
  • smartypress_ai_content_output_format — принудительно задать формат сгенерированного контента: gutenberg, html или legacy_markdown

Фильтры SEO Optimization

Эти фильтры относятся только к модулю SEO Optimization, который исправляет SEO-проблемы, обнаруженные Rank Math, Yoast SEO или AIOSEO, у существующей записи через эндпоинты /seo-optimization/* ниже.

smartypress_ai_seo_content_strategies

Добавьте, удалите или измените список стратегий оптимизации контента, используемых SEO Optimization.

add_filter( 'smartypress_ai_seo_content_strategies', function( $strategies ) { // Remove the TOC strategy unset( $strategies['table_of_contents'] ); return $strategies;
} );

Фильтры провайдеров

smartypress_ai_openrouter_request_params

Измените параметры запроса, отправляемые в API OpenRouter.

add_filter( 'smartypress_ai_openrouter_request_params', function( $params ) { $params['top_p'] = 0.9; return $params;
} );
  • smartypress_ai_openrouter_web_search_params — изменить параметры веб-поиска для моделей Sonar/online в OpenRouter
  • smartypress_ai_model_capabilities — переопределить флаги возможностей (vision, веб-поиск, JSON mode и т. д.) для любой пары провайдер/модель
  • smartypress_ai_openrouter_model_capabilities — переопределить флаги возможностей именно для моделей OpenRouter
  • smartypress_ai_openrouter_text_fallback_models — изменить список запасных текстовых моделей OpenRouter, когда настроенная модель недоступна

Фильтры массовой генерации

smartypress_ai_bulk_max_topics

Измените максимальное число тем для массовой генерации (по умолчанию: 50).

add_filter( 'smartypress_ai_bulk_max_topics', function() { return 100;
} );
  • smartypress_ai_bulk_estimated_input_tokens — переопределить оценку входных токенов на элемент для расчёта стоимости массовой генерации (по умолчанию: 3500)
  • smartypress_ai_bulk_estimated_output_tokens — переопределить оценку выходных токенов на элемент для расчёта стоимости массовой генерации (по умолчанию: 2500)

Хуки модулей и расширения админки

Эти хуки управляют загрузкой модулей и позволяют другим плагинам расширять экраны админки SmartyPress AI.

  • smartypress_ai_register_modules — отфильтровать список доступных модулей до их загрузки
  • smartypress_ai_pre_load_module — действие, срабатывает непосредственно перед загрузкой файлов модуля
  • smartypress_ai_module_loaded — действие, срабатывает после завершения загрузки модуля
  • smartypress_ai_module_toggled — действие, срабатывает после включения или отключения модуля на экране «Компоненты»
  • smartypress_ai_module_{module_id}_metadata — переопределить название, описание или иконку модуля на экране «Компоненты»
  • smartypress_ai_module_{module_id}_settings — действие, срабатывает, пока модуль регистрирует свои настройки; используется Content Generator, Image Generator, SEO Analysis и SEO Optimization
  • smartypress_ai_admin_routes — добавить или переопределить React-маршруты админки (path, component, title, icon)
  • smartypress_ai_admin_notices — отфильтровать зарегистрированные определения уведомлений в админке
  • smartypress_ai_register_admin_notices — действие, зарегистрировать дополнительные уведомления в админке
add_filter( 'smartypress_ai_register_modules', function( array $modules ) { // Prevent a module from loading at all, regardless of the Components screen. unset( $modules['seo_analysis'] ); return $modules;
} );

Фронтенд-фильтры (JavaScript)

Мастер генерации по плану предоставляет один фильтр @wordpress/hooks, чтобы другие плагины могли внедрить UI над полем темы — так модуль SEO Analysis добавляет помощник анализа конкурентов.

smartypress.contentGenerator.topicInput.beforeTopicField

Рендерит дополнительную разметку над полем темы в мастере контент-плана. Получает текущий отрисованный узел и объект контекста (settings, pluginSettings, providerModels, topic, setTopic, research, setResearch).

import { addFilter } from '@wordpress/hooks';
import { createElement, Fragment } from '@wordpress/element'; addFilter( 'smartypress.contentGenerator.topicInput.beforeTopicField', 'my-plugin/topic-field-note', ( rendered, context ) => createElement( Fragment, {}, rendered, createElement( 'p', {}, 'Current topic: ' + context.topic ) )
);

REST API

Все эндпоинты используют пространство имён smartypress/v1/ и требуют аутентификации через WordPress nonce (или другой аутентифицированный транспорт REST). Всего несколько десятков эндпоинтов; ниже они сгруппированы по назначению.

Настройки (требуется manage_options)

Метод Эндпоинт Описание
GET /settings Получить все настройки плагина (API-ключи замаскированы)
POST /settings Обновить настройки плагина (переданные поля объединяются с существующими)
POST /settings/test-provider Проверить соединение с провайдером (обязателен provider)
GET /provider-models Доступные текстовые модели по провайдерам (Yandex GPT и GigaChat — только при локали сайта ru_RU)
GET /openrouter-image-models Полный каталог моделей изображений OpenRouter, включая скрытые фильтром включённых моделей
GET /logs Прочитать отладочный лог плагина
DELETE /logs Очистить отладочный лог плагина
GET /logs/count Получить текущее число записей в логе
GET /post-types Список публичных, видимых в UI типов записей, доступных для генерации ИИ

Модули (требуется manage_options)

Метод Эндпоинт Описание
GET /modules Список всех модулей со статусом enabled/loaded
POST /modules/{module_id}/toggle Включить или отключить модуль (обязательны module_id, enabled)

Расход токенов (требуется manage_options)

Метод Эндпоинт Описание
GET /token-usage/stats Статистика расхода токенов по дням, моделям и провайдерам (days: 7, 14 или 30; по умолчанию 30)

Вспомогательные методы консоли (требуется manage_options)

Метод Эндпоинт Описание
GET /dashboard/check-thumbnails-plugin Проверить статус установки/активации сопутствующего плагина AI Thumbnails Maker
POST /dashboard/install-thumbnails-plugin Установить плагин AI Thumbnails Maker с WordPress.org
POST /dashboard/activate-thumbnails-plugin Активировать плагин AI Thumbnails Maker

Генерация контента (требуется edit_posts)

Метод Эндпоинт Описание
POST /generate-title Сгенерировать заголовок из контекста (обязателен context)
POST /generate-content Сгенерировать контент статьи для заголовка (обязателен title)
POST /generate-excerpt Сгенерировать отрывок из контента (обязателен content)
POST /generate-categories Предложить элементы таксономии для пары заголовок/контент (обязательны title, content)
POST /wand Выполнить действие волшебной палочки (обязательны action, data)
POST /create-post Создать запись WordPress из сгенерированных полей
POST /generate-post-plan-schema Сгенерировать редактируемую структуру плана — фаза 1 (обязателен topic)
POST /generate-post-plan-fill Наполнить структуру плана реальным контентом — фаза 2 (обязательны topic, schema)
POST /improve-plan-prompt-template Переписать инструкцию пользователя к плану в более ясный промпт (обязателен prompt)
POST /apply-post-plan-instruction Применить свободную инструкцию редактирования к утверждённому плану (обязательны plan, instruction)
POST /generate-draft-from-plan Сгенерировать полный черновик статьи из утверждённого плана (обязателен plan)
POST /generate-draft-lead Сгенерировать только лид/введение статьи из плана (обязателен plan)
POST /generate-draft-section Сгенерировать один раздел статьи из плана, опционально с URL-референсом (обязательны plan, section)
POST /create-post-from-draft-parts Собрать сгенерированные лид/разделы в черновик записи (обязателен blocks)

Совет: единого эндпоинта /generate-post-plan нет. Генерация плана разделена на /generate-post-plan-schema (строит редактируемую структуру) и /generate-post-plan-fill (наполняет её контентом), чтобы редактор мог проверить и скорректировать структуру до того, как ИИ запишет значения плана.

Массовая генерация (требуется publish_posts, кроме /bulk-prompts, для которого нужен edit_posts)

Метод Эндпоинт Описание
POST /bulk-generate Сгенерировать несколько записей из списка тем (устаревший синхронный поток)
POST /bulk-generate-single Сгенерировать одну запись внутри устаревшего массового пакета (обязателен topic)
GET /bulk-prompts Получить шаблоны промптов массовой генерации по умолчанию
POST /bulk-jobs Создать задание массовой генерации в очереди из списка тем или массива элементов
POST /bulk-estimate Оценить расход токенов и стоимость задания массовой генерации до запуска
GET /bulk-jobs/{job_id} Получить статус и прогресс задания массовой генерации
POST /bulk-jobs/{job_id}/process Обработать следующий элемент очереди в задании
POST /bulk-jobs/{job_id}/action Приостановить, возобновить, отменить или повторить задание (обязателен action)

Генерация изображений (требуется edit_posts)

Метод Эндпоинт Описание
POST /generate-image Сгенерировать изображение по промпту (обязателен prompt)
GET /generated-images Список изображений, уже сохранённых ИИ в медиатеку
GET /image-models Доступные модели генерации изображений по провайдерам
GET /image-edit-models Доступные модели изображений с поддержкой редактирования/регенерации
POST /regenerate-image Отредактировать существующее изображение ИИ корректирующим промптом (обязательны attachment_id, prompt)

Image ALT Generator (требуется upload_files, кроме обновления настроек — для него нужен manage_options)

Метод Эндпоинт Описание
GET /image-alt/attachments Список изображений со статусом ALT, с пагинацией, фильтром и поиском
GET /image-alt/stats Статистика медиатеки (всего, с ALT / без ALT, сгенерировано, с ошибками)
GET /image-alt/index Текущее состояние индексации и доступные типы записей
POST /image-alt/index/start Начать пересборку индекса ALT медиатеки
POST /image-alt/index/next Обработать следующую партию индексации
POST /image-alt/index/cancel Отменить текущее задание индексации
POST /image-alt/generate Сгенерировать alt-текст для одного изображения (обязателен attachment_id)
GET /image-alt/job Получить статус текущего задания массовой генерации
POST /image-alt/bulk/start Запустить задание массовой генерации ALT
POST /image-alt/bulk/next Обработать следующую партию в текущем массовом задании
POST /image-alt/bulk/cancel Отменить текущее массовое задание
GET /image-alt/settings Получить настройки модуля (требуется upload_files)
POST /image-alt/settings Сохранить настройки модуля (требуется manage_options)

SEO Optimization (требуется edit_post для целевой записи, кроме keyword-slug — для него нужен edit_posts)

Метод Эндпоинт Описание
POST /seo-optimization/context Закэшировать нормализованный контекст записи для SEO-анализа (TTL 30 мин, обязателен post_id)
POST /seo-optimization/run Запустить полный пайплайн SEO-исправлений (анализ → метаданные → контент, обязателен post_id)
POST /seo-optimization/fix Применить выбранные SEO-исправления к записи (обязателен post_id)
GET /seo-optimization/keyword-slug Преобразовать ключевое слово в форму ярлыка (обязателен keyword)

SEO Analysis (требуется edit_posts)

Метод Эндпоинт Описание
POST /seo-analysis/competitors Исследовать конкурентов по фокусному ключевому слову через OpenRouter Sonar (любая локаль) или Yandex Search (только ru_RU)
POST /seo-analysis/keywords Предложить связанные ключевые слова с объёмом поиска через Yandex Wordstat (только ru_RU)

Чек-лист работы с хуками, фильтрами и REST API

Рабочий процесс с хуками, фильтрами и REST API лучше воспринимать как повторяемую процедуру, а не разовую настройку. Сначала убедитесь, что связанный с этой страницей модуль SmartyPress AI Engine включён, затем проверьте провайдер, модель, язык и типы записей по умолчанию — и только после этого запускайте функцию на боевом контенте. Так результат остаётся предсказуемым и проще сравнивать ответы OpenAI, DeepSeek, Anthropic Claude, OpenRouter, Yandex GPT и GigaChat.

Используйте этот чек-лист, когда документируете, тестируете или обучаете другого редактора работе с хуками, фильтрами и REST API. Он помогает держать настройку в согласии с правами WordPress, полями Rank Math SEO и редакционным процессом сайта. Если результат отличается от ожидаемого, повторите тот же чек-лист с более коротким промптом и меньшей температурой, прежде чем менять глобальные настройки.

  1. Убедитесь, что нужный модуль SmartyPress AI включён на экране «Компоненты».
  2. Откройте «Настройки» и проверьте, что у выбранного провайдера есть действительный API-ключ и проверенное соединение.
  3. Выберите модель под задачу: быстрые — для черновиков, премиум — для финальных маркетинговых текстов, с веб-поиском — для исследований.
  4. Перед генерацией проверьте язык вывода, температуру, max tokens и переменные промптов.
  5. Сначала сохраните результат как черновик, затем проверьте заголовки, ссылки, факты и SEO-поля перед публикацией.

Рекомендуемые настройки

Для большинства задач с хуками, фильтрами и REST API начните с сбалансированной модели вроде GPT-4o Mini, GPT-4o, DeepSeek V4 Flash, Claude Sonnet или тщательно выбранной модели OpenRouter. Держите температуру около 0.50.8 для документации и обучающих материалов: здесь важнее ясность, чем эксперименты. Повышайте температуру только когда нужны более креативные заголовки, введения или альтернативные формулировки.

Задайте понятный язык по умолчанию и держите переменные промптов согласованными между статьями. Для страниц документации лучше всего подходит нейтральный или профессиональный тон письма. Если результат слишком короткий, увеличьте число разделов или абзацев в разделе, а не просите модель «написать ещё» постфактум. Структурированные настройки дают более стабильный результат и упрощают воспроизведение сценария Хуки, фильтры и REST API позже.

Прокрутить вверх