← Все новости
30 июля 2026 г.

Создайте свой первый AI-плагин для WordPress

Узнайте, как использовать новые инструменты WordPress: Abilities API, AI Client и MCP Adapter для создания AI-плагина Photo to Post.

Создайте свой первый AI-плагин для WordPress

В последних двух мажорных релизах WordPress появились важные инструменты для разработчиков, желающих использовать искусственный интеллект: Abilities API (стандартный способ регистрации функциональных блоков, доступных для REST API, редактора, других разработчиков и AI-агентов), WordPress AI Client (провайдеро-независимая PHP-библиотека для работы с любыми AI-моделями) и MCP Adapter (открывает способности как MCP-инструменты для внешних AI-агентов). В этом руководстве мы шаг за шагом создадим реальный плагин Photo to Post, который иллюстрирует, как три этих компонента работают вместе.

Плагин Photo to Post: архитектура и возможности

Photo to Post — это плагин, который по URL изображения:

  • генерирует текстовое описание с помощью AI-модели с поддержкой зрения;
  • на основе описания создаёт черновик поста (заголовок и содержимое);
  • устанавливает исходное изображение как миниатюру записи.

Ключевая особенность — внутри плагин состоит из трёх композируемых способностей (Abilities), которые вызывают WordPress AI Client. Третий навык — пример композиции: он вызывает два других через WP_Ability::execute(). Это принципиальное отличие от традиционных подходов к созданию функциональности в WordPress.

Способность Действие Возможность AI
describe-image URL изображения → текстовое описание Vision (ввод изображения)
generate-post-from-description Описание → заголовок и контент Генерация текста
create-post-from-photo Оркестрирует две выше, затем создаёт пост Без AI, но управляет другими

Подготовка окружения и подключение AI-провайдера

Для запуска кода потребуются:

  • локальное окружение WordPress 7.0+, PHP 8.1+, Composer и Node.js;
  • API-ключ провайдера с моделью, поддерживающей vision (OpenAI, Anthropic, Google или любой другой через плагин).

Установите и активируйте стартовый плагин (скачать версию 1.1.1), выполните composer install и npm install. В главном файле плагина отмечены TODO — именно в этих местах мы будем писать код.

С WordPress 7.0 для хранения API-ключей появился единый экран Коннекторы (Настройки). Разработчики могут зарегистрировать свой коннектор, и пользователь сможет ввести ключ в одном месте. Для AI-провайдеров уже существуют плагины OpenAI, Anthropic, Google — установите нужный и сохраните ключ. Это избавляет от необходимости создавать отдельную страницу настроек для каждого плагина.

Регистрация способностей (Abilities) и подключение к REST API

Регистрация происходит через функции wp_register_ability_category и wp_register_ability в файле includes/abilities.php. Каждая способность — это описание с меткой, описанием, схемами ввода/вывода, проверкой прав и callback-функцией.

wp_register_ability_category(
	'wp-ai-workshop-demo',
	array(
		'label'       => __( 'WP AI Workshop Demo', 'wp-ai-workshop-demo' ),
		'description' => __( 'Abilities for the WP AI Workshop Demo.', 'wp-ai-workshop-demo' ),
	)
);

Затем регистрируются три способности. Например, первая — wp-ai-workshop-demo/describe-image:

wp_register_ability(
	'wp-ai-workshop-demo/describe-image',
	array(
		'label'               => __( 'Describe an image via AI', 'wp-ai-workshop-demo' ),
		'description'         => __( 'Given an image URL, use AI vision to produce a detailed text description of the image.', 'wp-ai-workshop-demo' ),
		'category'            => 'wp-ai-workshop-demo',
		'input_schema'        => array(
			'type'       => 'object',
			'properties' => array(
				'image_url' => array(
					'type'        => 'string',
					'description' => 'The URL of the image to describe.',
				),
			),
			'required'   => array( 'image_url' ),
		),
		'output_schema'       => array(
			'type'       => 'object',
			'properties' => array(
				'description' => array(
					'type'        => 'string',
					'description' => 'A detailed description of the image.',
				),
			),
			'required'   => array( 'description' ),
		),
		'execute_callback'    => 'wp_ai_workshop_demo_describe_image',
		'permission_callback' => function () {
			return current_user_can( 'edit_posts' );
		},
		'meta'                => array(
			'show_in_rest' => true,
		),
	)
);

Аналогично регистрируются generate-post-from-description и create-post-from-photo. После этого достаточно добавить хуки в главном файле плагина:

add_action( 'wp_abilities_api_categories_init', 'wp_ai_workshop_demo_register_ability_categories' );
add_action( 'wp_abilities_api_init', 'wp_ai_workshop_demo_register_describe_image_ability' );
add_action( 'wp_abilities_api_init', 'wp_ai_workshop_demo_register_generate_post_from_description_ability' );
add_action( 'wp_abilities_api_init', 'wp_ai_workshop_demo_register_create_post_from_photo_ability' );

Теперь, если в настройках постоянных ссылок выбрано не «Обычные», способности сразу доступны через REST API: можно авторизоваться через пароль приложения и отправить GET-запрос к wp-json/wp-abilities/v1/abilities. В ответе будут видны все три зарегистрированные способности с полными схемами — и это без единой строки кода для REST.

Реализация логики: описание изображения, генерация поста и композиция

Шаг 1: Описание изображения (файл includes/vision.php). Здесь впервые вызывается WordPress AI Client. Изображение загружается через wp_remote_get(), преобразуется в data URI (так как некоторые провайдеры, например Anthropic, требуют inline-формат, а data URI универсален).

$data_uri = wp_ai_workshop_demo_image_url_to_data_uri( $image_url );
$prompt  = 'Describe this image in detail for someone who cannot see it. Focus on the main subject…';
$description = wp_ai_client_prompt()
	->with_text( $prompt )
	->with_file( $data_uri )
	->generate_text();

wp_ai_client_prompt() возвращает построитель запроса. В случае ошибки возвращается WP_Error — это важно проверять.

Шаг 2: Генерация поста (файл includes/content.php). Второй AI-запрос превращает описание в заголовок и содержимое. Чтобы получить структурированный ответ, промпт просит вернуть JSON-объект с ключами title и content.

$text = wp_ai_client_prompt( $prompt )->generate_text();
$data = wp_ai_workshop_demo_decode_json_response( $text ); // защита от лишних markdown-обёрток

Добавлена вспомогательная функция, которая вырезает возможные markdown-блоки кода — AI-модели не всегда строго следуют инструкциям, и такой защитный парсинг гарантирует получение корректного JSON.

Шаг 3: Композиция способностей (файл includes/post.php). Это ключевой момент: способность create-post-from-photo не обращается к AI напрямую. Она вызывает две другие способности через wp_get_ability() и ->execute():

$describe_ability = wp_get_ability( 'wp-ai-workshop-demo/describe-image' );
$description_result = $describe_ability->execute( array( 'image_url' => $image_url ) );

$generate_ability = wp_get_ability( 'wp-ai-workshop-demo/generate-post-from-description' );
$copy_result = $generate_ability->execute( array(
	'description' => $description_result['description'],
	'prompt'      => $prompt,
) );

// Затем создаётся пост и устанавливается миниатюра

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

Интеграция с админкой и MCP: один код — три интерфейса

После регистрации способности автоматически доступны через REST, но их можно использовать и в JS. Для этого в includes/admin.php подключается скрипт-модуль @wordpress/core-abilities. Затем в React-компоненте SettingsPage импортируются функции getAbility и executeAbility:

const { getAbility, executeAbility } = await import( '@wordpress/abilities' );
const ability = getAbility( 'wp-ai-workshop-demo/create-post-from-photo' );
const result = await executeAbility( 'wp-ai-workshop-demo/create-post-from-photo', {
	image_url: input.image_url,
	prompt: input.prompt,
} );

Таким образом, та же способность, которую мы проверяли через curl, теперь работает из панели управления.

Последний шаг — открыть доступ к способности через MCP. Для этого в регистрации create-post-from-photo в массиве meta добавляется флаг 'mcp' => array( 'public' => true ). Затем устанавливается и активируется плагин MCP Adapter, который создаёт MCP-сервер на сайте. После этого любой MCP-клиент (например, Claude Desktop) может вызвать способность, отправив команду «создай пост по этой фотографии». Три разных точки входа — REST, админка, AI-агент — и ни одной строки дублирующегося кода.

Настройка тайм-аута

Поскольку плагин делает два последовательных AI-запроса и загружает изображение, одного HTTP-запроса может не хватить. AI Client предоставляет фильтр для увеличения тайм-аута:

add_filter( 'wp_ai_client_default_request_timeout', function() {
	return 120;
} );

Итоги

Используя новые возможности ядра WordPress — Abilities API, AI Client и MCP Adapter — вы можете добавлять AI-функции в свои плагины без изобретения велосипедов. Регистрируйте способности, описывайте их схемы, компонуйте маленькие в большие — и REST API, редактор блоков и внешние AI-агенты получат доступ к ним автоматически. Именно такой подход открывает путь к созданию по-настоящему интеллектуальных и расширяемых решений для WordPress.

Источник: https://developer.wordpress.org/news/2026/07/build-your-first-ai-powered-wordpress-plugin/

Первоисточник: NewsKit