وردپرس کالاوردپرس مدرن‌تر و حرفه‌ای‌تر

اتصال وردپرس به هوش مصنوعی در وردپرس ۷: آموزش کامل AI Client، Connectors و Abilities API

وردپرس ۷ با AI Client و صفحه‌ی Connectors راه رسمی اتصال سایت به مدل‌های هوش مصنوعی را به هسته آورد. در این آموزش نصب ارائه‌دهنده، ثبت کلید، نوشتن اولین درخواست با wp_ai_client_prompt، ساخت یک افزونه‌ی واقعی، کار با Abilities API و MCP و تغییرات نسخه‌های ۷.۱ و ۷.۲ را قدم‌به‌قدم می‌بینید.

اتصال وردپرس به هوش مصنوعی در وردپرس ۷ با AI Client و Connectors

وردپرس ۷ برای اولین بار یک لایه‌ی رسمی هوش مصنوعی به هسته اضافه کرد. از این نسخه به بعد برای اتصال سایت به مدل‌های هوش مصنوعی به کد اختصاصی هر شرکت و افزونه‌های واسط نیازی ندارید. یک افزونه‌ی ارائه‌دهنده نصب می‌کنید، کلید API را در صفحه‌ی Connectors وارد می‌کنید و هر افزونه‌ای که از تابع wp_ai_client_prompt() استفاده کند به همان اتصال وصل می‌شود. این راهنما همین مسیر را با نمونه کد واقعی نشان می‌دهد و در پایان تغییرات نسخه‌های ۷.۱ و ۷.۲ را بررسی می‌کند.

آنچه در این آموزش یاد می‌گیرید

  • وردپرس ۷ دقیقاً چه چیزی به هسته اضافه کرده و هر قطعه چه کاری انجام می‌دهد

  • نصب افزونه‌ی ارائه‌دهنده و ثبت امن کلید API در تنظیمات › Connectors

  • نوشتن اولین درخواست با AI Client و کنترل مدل، دما، طول پاسخ و خروجی JSON

  • ساخت یک افزونه‌ی کوچک و واقعی که با یک کلیک خلاصه‌ی فارسی برای نوشته می‌سازد

  • ثبت قابلیت با Abilities API و باز کردن آن برای عامل‌های هوش مصنوعی از طریق MCP

  • خاموش کردن یا محدود کردن هوش مصنوعی، کنترل هزینه و نکته‌های امنیتی

  • نکته‌های ویژه برای سایت‌های ایرانی و تغییرات وردپرس ۷.۱ و ۷.۲

وردپرس ۷ دقیقاً چه چیزی به هسته اضافه کرد؟

وردپرس ۷.۰ با نام آرمسترانگ در ۳۰ اردیبهشت ۱۴۰۵ (۲۰ مه ۲۰۲۶) منتشر شد. تیم هسته سه زیرساخت را با عنوان «قطعه‌های سازنده‌ی هوش مصنوعی» وارد هسته کرد. هیچ‌کدام از این‌ها قابلیت آماده برای کاربر نهایی نیست. همه‌ی آن‌ها زیرساخت‌اند تا افزونه‌ها و قالب‌ها روی یک پایه‌ی مشترک بسازند و سایت‌دار لازم نباشد برای هر افزونه یک کلید جداگانه وارد کند.

قطعه

از نسخه

چه کاری می‌کند

کجا با آن سروکار دارید

AI Client

۷.۰

رابط یکپارچه برای ارسال درخواست به هر مدل هوش مصنوعی

کد افزونه با wp_ai_client_prompt()

Connectors

۷.۰

نگهداری کلید API ارائه‌دهنده‌ها در یک جا برای همه‌ی افزونه‌ها

پیشخوان › تنظیمات › Connectors

Abilities API

۶.۹ (PHP) و ۷.۰ (جاوااسکریپت)

ثبت قابلیت‌های سایت با اسکیما و مجوز تا ابزارها و عامل‌ها بتوانند آن‌ها را کشف و اجرا کنند

wp_register_ability() و REST

افزونه‌ی AI

افزونه‌ی جداگانه

قابلیت‌های آماده مثل تولید متن جایگزین تصویر، عنوان، خلاصه، ترجمه و اسلاگ

مخزن افزونه‌های وردپرس

MCP Adapter

افزونه‌ی جداگانه

عرضه‌ی قابلیت‌های ثبت‌شده به عامل‌های هوش مصنوعی با پروتکل MCP

مخزن افزونه‌های وردپرس

نکته‌ی مهم: هسته هیچ مدل، هیچ ارائه‌دهنده و هیچ کلیدی همراه خود ندارد. تا زمانی که خودتان ارائه‌دهنده نصب نکنید و کلید ندهید، وردپرس حتی یک درخواست هم به سرویس خارجی نمی‌فرستد. سایت‌هایی که به هوش مصنوعی نیاز ندارند دقیقاً مثل قبل کار می‌کنند و هیچ تغییری در سرعت یا رفتار آن‌ها ایجاد نمی‌شود.

معماری اتصال در یک نگاه

معماری اتصال وردپرس ۷ به هوش مصنوعی: افزونه، AI Client، افزونه ارائه‌دهنده، Connectors و Abilities API

جریان یک درخواست از افزونه‌ی شما تا مدل هوش مصنوعی. Connectors کلید را تأمین می‌کند و Abilities API سایت را برای عامل‌های خارجی قابل استفاده می‌کند.

در این معماری چهار لایه پشت سر هم قرار می‌گیرند:

  1. کد شما (افزونه یا قالب) یک درخواست می‌سازد و از AI Client می‌خواهد آن را اجرا کند.

  2. AI Client درخواست را به شکل استاندارد به ارائه‌دهنده‌ای که در سایت فعال است می‌سپارد و پاسخ یا خطای WP_Error برمی‌گرداند.

  3. افزونه‌ی ارائه‌دهنده (Anthropic، Google، OpenAI، Ollama و غیره) با API همان شرکت صحبت می‌کند و کلیدش را از Connectors می‌گیرد.

  4. API مدل پاسخ را تولید می‌کند. اگر فردا ارائه‌دهنده را عوض کنید، کد شما تغییری نمی‌کند.

Abilities API یک مسیر دیگر است: به جای اینکه سایت از هوش مصنوعی چیزی بخواهد، هوش مصنوعی (مثلاً Claude یا Cursor) از سایت می‌خواهد کاری انجام دهد. این مسیر را در مرحله‌ی ۴ می‌بینیم.

پیش‌نیازها

  • وردپرس ۷.۰ یا بالاتر. ترجیحاً ۷.۰.۳ به بعد یا ۷.۱ که چند اشکال اولیه در آن‌ها رفع شده است.

  • PHP ۷.۴ به بالا. وردپرس ۷ پشتیبانی از PHP ۷.۲ و ۷.۳ را کنار گذاشت. نسخه‌ی پیشنهادی ۸.۳ است و بعضی افزونه‌های ارائه‌دهنده PHP ۸ می‌خواهند.

  • یک افزونه‌ی ارائه‌دهنده. Anthropic، Google و OpenAI مستقیم از صفحه‌ی Connectors قابل نصب‌اند. برای مدل‌های محلی افزونه‌ی AI Provider for Ollama و برای چند سرویس یک‌جا افزونه‌ی OpenRouter وجود دارد.

  • کلید API با سقف هزینه. قبل از وارد کردن کلید، در پنل ارائه‌دهنده محدودیت خرج ماهانه تعیین کنید. هسته‌ی وردپرس هیچ سقف هزینه‌ای ندارد.

  • دسترسی سرور به API ارائه‌دهنده. درخواست‌ها از سرور سایت ارسال می‌شوند نه از مرورگر کاربر. برای سایت‌های ایرانی به بخش نکته‌های ویژه نگاه کنید.

مرحله ۱: نصب ارائه‌دهنده و ثبت کلید در تنظیمات › Connectors

صفحه‌ی Connectors نقطه‌ی شروع است. سه ارائه‌دهنده‌ی اصلی در آن به صورت پیش‌فرض فهرست شده‌اند و هر افزونه‌ی ارائه‌دهنده‌ی دیگری که نصب کنید به صورت خودکار به همین صفحه اضافه می‌شود.

  1. در پیشخوان به تنظیمات › Connectors بروید. این صفحه فقط برای مدیران (و در شبکه‌ی چندسایته برای ابرمدیران) نمایش داده می‌شود.

  2. روی کارت ارائه‌دهنده‌ی موردنظر دکمه‌ی نصب را بزنید. افزونه‌ی رسمی همان ارائه‌دهنده از مخزن وردپرس نصب و فعال می‌شود.

  3. با لینک «دریافت کلید» به پنل ارائه‌دهنده بروید، یک کلید جدید فقط برای این سایت بسازید و سقف هزینه تعیین کنید.

  4. کلید را در همان کارت وارد و ذخیره کنید. وردپرس پیش از ذخیره یک اتصال آزمایشی انجام می‌دهد و وضعیت «متصل» را نشان می‌دهد.

  5. اگر چند ارائه‌دهنده دارید، همه را وصل کنید. AI Client بر اساس ترجیح مدل که در کد تعیین می‌کنید بین آن‌ها انتخاب می‌کند.

نمای شماتیک صفحه Connectors در تنظیمات وردپرس ۷ با کارت‌های Anthropic، Google و OpenAI

نمای شماتیک صفحه‌ی Connectors. هر کارت وضعیت افزونه، منبع کلید و وضعیت اتصال را نشان می‌دهد.

ترتیب خواندن کلید: متغیر محیطی، ثابت PHP، پایگاه داده

وارد کردن کلید از صفحه‌ی Connectors ساده‌ترین راه است اما تنها راه نیست. وردپرس برای هر ارائه‌دهنده سه منبع را به ترتیب بررسی می‌کند و اولین مقداری که پیدا شود استفاده می‌شود. اگر کلید را در متغیر محیطی یا ثابت تعریف کرده باشید، صفحه‌ی Connectors همین را نشان می‌دهد و اجازه‌ی تغییر از رابط کاربری را نمی‌دهد.

اولویت

منبع

مثال برای Anthropic

مناسب برای

۱

متغیر محیطی سرور

ANTHROPIC_API_KEY=sk-ant-...

هاست‌های حرفه‌ای، داکر، سایت‌های پرترافیک

۲

ثابت PHP در wp-config.php

define( 'ANTHROPIC_API_KEY', '...' );

بیشتر سایت‌ها؛ کلید در بکاپ دیتابیس نمی‌رود

۳

پایگاه داده (جدول options)

connectors_ai_anthropic_api_key

تست و سایت‌های کوچک

ترتیب خواندن کلید API در وردپرس ۷: متغیر محیطی، ثابت wp-config و پایگاه داده

ترتیب جست‌وجوی کلید برای اتصال‌های از نوع api_key. الگوی نام برای ارائه‌دهنده‌های هوش مصنوعی همیشه {PROVIDER_ID}_API_KEY است.

// wp-config.php
define( 'ANTHROPIC_API_KEY', 'sk-ant-...' );
// یا برای ارائه‌دهنده‌های دیگر:
define( 'OPENAI_API_KEY', 'sk-...' );
define( 'GOOGLE_API_KEY', 'AIza...' );

کلیدها چقدر امن هستند؟

طبق اعلام رسمی تیم هسته، کلیدهایی که از رابط کاربری ذخیره می‌شوند در دیتابیس رمزنگاری نمی‌شوند و فقط در صفحه‌ی Connectors پنهان نمایش داده می‌شوند. هر افزونه‌ای که روی سایت فعال باشد می‌تواند به این کلید دسترسی داشته باشد. به همین دلیل تعریف کلید به صورت ثابت یا متغیر محیطی برای سایت‌های واقعی توصیه می‌شود. رمزنگاری کلیدها با عنوان Secrets API برای وردپرس ۷.۲ در دست بررسی است که در بخش تغییرات به آن می‌رسیم.

مرحله ۲: اولین درخواست به هوش مصنوعی با AI Client

نقطه‌ی ورود همه‌چیز تابع wp_ai_client_prompt() است. این تابع یک «سازنده‌ی درخواست» برمی‌گرداند که با متدهای زنجیره‌ای تنظیم می‌شود و در پایان با یکی از متدهای generate نتیجه را می‌گیرد. ساده‌ترین شکل آن سه خط بیشتر نیست:

$text = wp_ai_client_prompt( 'یک توضیح دو جمله‌ای درباره‌ی وردپرس بنویس.' )
	->generate_text();

if ( is_wp_error( $text ) ) {
	// ارائه‌دهنده‌ای تنظیم نشده، کلید نامعتبر است یا سقف درخواست پر شده است.
	error_log( $text->get_error_message() );
	return;
}

echo wp_kses_post( $text );

دو نکته در همین مثال ساده مهم است. اول اینکه خروجی یا رشته‌ی متنی است یا WP_Error و باید همیشه با is_wp_error() بررسی شود. دوم اینکه خروجی مدل را مثل هر ورودی ناامن دیگری قبل از نمایش با wp_kses_post() یا esc_html() پاک‌سازی کنید.

قبل از نمایش دکمه، پشتیبانی را بررسی کنید

کاربری که هنوز ارائه‌دهنده‌ای نصب نکرده نباید دکمه‌ی «تولید با هوش مصنوعی» ببیند. AI Client برای همین یک بررسی سبک دارد که بدون ارسال درخواست به سرویس خارجی می‌گوید آیا مدلی برای این نوع کار در دسترس هست یا نه:

// وردپرس قدیمی‌تر از ۷ یا هوش مصنوعی خاموش است؟ هیچ رابطی نشان نده.
if ( ! function_exists( 'wp_ai_client_prompt' ) || ! wp_supports_ai() ) {
	return;
}

// این بررسی هیچ درخواستی به سرویس خارجی نمی‌فرستد.
$probe = wp_ai_client_prompt( 'test' );
if ( ! $probe->is_supported_for_text_generation() ) {
	// هنوز هیچ ارائه‌دهنده‌ای با کلید معتبر وجود ندارد.
	return;
}

زنجیره‌ی تنظیمات درخواست

زنجیره متدهای wp_ai_client_prompt در AI Client وردپرس ۷

هر متد یک تنظیم اضافه می‌کند. ترتیب متدهای using اهمیتی ندارد اما متد generate همیشه آخر است.

$text = wp_ai_client_prompt( $content )
	->using_system_instruction( 'تو ویراستار فارسی هستی. فقط متن نهایی را بده، بدون مقدمه.' )
	->using_temperature( 0.3 )
	->using_max_tokens( 400 )
	// شناسه‌ی مدل‌ها را از مستندات ارائه‌دهنده بگیرید. اولین مدل در دسترس انتخاب می‌شود.
	->using_model_preference( 'claude-sonnet-5-5', 'gpt-5.4' )
	->generate_text();

متد

کار

نکته

using_system_instruction()

تعیین نقش مدل و قواعد پاسخ

بهترین جا برای گفتن «فقط فارسی جواب بده»

using_temperature()

میزان تنوع پاسخ بین ۰ و ۱

برای خلاصه، ترجمه و داده‌ی ساخت‌یافته عدد کم (۰.۱ تا ۰.۳)

using_max_tokens()

سقف طول پاسخ

اصلی‌ترین اهرم کنترل هزینه

using_model_preference()

فهرست مدل‌های ترجیحی به ترتیب

اولین مدلی که ارائه‌دهنده‌اش فعال باشد انتخاب می‌شود

using_model()

اجبار به یک مدل مشخص

مستندات رسمی توصیه نمی‌کند؛ اگر مدل نباشد خطا می‌گیرید

generate_text()

یک پاسخ متنی

رشته یا WP_Error

generate_texts( 3 )

چند پاسخ متفاوت

برای پیشنهاد چند عنوان

generate_image()

تولید تصویر

نیاز به ارائه‌دهنده‌ای با پشتیبانی تصویر دارد

as_json_response( $schema )

خروجی JSON مطابق اسکیما

برای هر جایی که قرار است کد نتیجه را بخواند

خروجی JSON ساخت‌یافته

وقتی قرار است کد شما نتیجه را پردازش کند، متن آزاد دردسرساز است. با تعیین یک JSON Schema از مدل می‌خواهید دقیقاً همان ساختار را برگرداند:

$schema = array(
	'type'       => 'object',
	'properties' => array(
		'title'    => array( 'type' => 'string' ),
		'keywords' => array(
			'type'  => 'array',
			'items' => array( 'type' => 'string' ),
		),
	),
	'required'   => array( 'title', 'keywords' ),
);

$json = wp_ai_client_prompt( 'برای این متن یک عنوان و پنج کلیدواژه پیشنهاد بده: ' . $content )
	->using_temperature( 0.2 )
	->as_json_response( $schema )
	->generate_text();

$data = is_wp_error( $json ) ? null : json_decode( $json, true );

تولید تصویر

همان سازنده برای تصویر هم کار می‌کند. خروجی یک شیء فایل است که می‌توانید آن را به صورت data URI نمایش دهید یا با توابع رسانه‌ی وردپرس در کتابخانه ذخیره کنید:

$image_file = wp_ai_client_prompt( 'تصویر مینیمال و تخت از یک لپ‌تاپ روی میز چوبی' )
	->generate_image();

if ( ! is_wp_error( $image_file ) ) {
	echo '<img src="' . esc_url( $image_file->getDataUri() ) . '" alt="لپ‌تاپ روی میز چوبی">';
}

برای ساخت خروجی ترکیبی (متن و تصویر در یک پاسخ) متد as_output_modalities() و برای گرفتن شیء کامل نتیجه به جای رشته، متد generate_result() وجود دارد. API جاوااسکریپت AI Client هنوز در هسته نیست؛ برای کار در ویرایشگر فعلاً از REST یا AJAX به سمت PHP استفاده کنید.

مرحله ۳: یک افزونه‌ی واقعی: خلاصه‌ی فارسی با یک کلیک

همه‌ی قطعه‌ها را در یک افزونه‌ی کوچک کنار هم می‌گذاریم. این افزونه یک جعبه در کنار ویرایشگر نوشته اضافه می‌کند. با زدن دکمه، متن نوشته به مدل فرستاده می‌شود و خلاصه‌ی سه جمله‌ای در فیلد چکیده ذخیره می‌شود. کد را در فایلی با نام wpkala-ai-excerpt.php داخل پوشه‌ی افزونه‌ها بگذارید و فعال کنید.

<?php
/**
 * Plugin Name: خلاصه‌ساز هوشمند وردپرس کالا
 * Description: با یک کلیک برای نوشته خلاصه‌ی فارسی می‌سازد و در فیلد چکیده ذخیره می‌کند.
 * Requires at least: 7.0
 * Requires PHP: 7.4
 */

defined( 'ABSPATH' ) || exit;

add_action( 'add_meta_boxes', function () {
	if ( ! function_exists( 'wp_ai_client_prompt' ) || ! wp_supports_ai() ) {
		return;
	}
	add_meta_box( 'wpk_ai_excerpt', 'خلاصه با هوش مصنوعی', 'wpk_ai_excerpt_box', 'post', 'side' );
} );

function wpk_ai_excerpt_box( $post ) {
	$probe = wp_ai_client_prompt( 'test' );
	if ( ! $probe->is_supported_for_text_generation() ) {
		echo '<p>هنوز ارائه‌دهنده‌ای تنظیم نشده است. به تنظیمات › Connectors بروید.</p>';
		return;
	}

	$url = wp_nonce_url(
		admin_url( 'admin-post.php?action=wpk_ai_excerpt&post=' . $post->ID ),
		'wpk_ai_excerpt_' . $post->ID
	);
	echo '<a class="button button-primary" href="' . esc_url( $url ) . '">ساخت خلاصه</a>';
}

add_action( 'admin_post_wpk_ai_excerpt', function () {
	$post_id = absint( $_GET['post'] ?? 0 );
	check_admin_referer( 'wpk_ai_excerpt_' . $post_id );

	if ( ! current_user_can( 'edit_post', $post_id ) ) {
		wp_die( 'شما اجازه‌ی ویرایش این نوشته را ندارید.' );
	}

	$content = wp_strip_all_tags( get_post_field( 'post_content', $post_id ) );
	$content = mb_substr( $content, 0, 6000 ); // کنترل هزینه: فقط ابتدای متن

	$summary = wp_ai_client_prompt( "این متن را در حداکثر سه جمله‌ی فارسی خلاصه کن:\n\n" . $content )
		->using_system_instruction( 'فقط متن خلاصه را برگردان. بدون مقدمه و بدون علامت‌گذاری اضافه.' )
		->using_temperature( 0.3 )
		->using_max_tokens( 300 )
		->generate_text();

	if ( ! is_wp_error( $summary ) ) {
		wp_update_post( array(
			'ID'           => $post_id,
			'post_excerpt' => sanitize_textarea_field( $summary ),
		) );
	}

	wp_safe_redirect( get_edit_post_link( $post_id, 'raw' ) );
	exit;
} );

چند تصمیم در این کد عمدی است و برای افزونه‌های واقعی هم کاربرد دارد:

  • جعبه فقط وقتی ساخته می‌شود که وردپرس ۷ باشد و هوش مصنوعی خاموش نشده باشد. روی نسخه‌های قدیمی‌تر هیچ خطایی رخ نمی‌دهد.

  • بررسی is_supported_for_text_generation() باعث می‌شود پیش از تنظیم ارائه‌دهنده یک پیام راهنما نمایش داده شود نه یک دکمه‌ی خراب.

  • nonce و current_user_can() جلوی سوءاستفاده از لینک را می‌گیرند. هر درخواست به مدل هزینه دارد؛ هر کسی نباید بتواند آن را بزند.

  • متن ورودی به شش هزار کاراکتر محدود شده است. برای نوشته‌های بلند بهتر است ابتدای متن یا بخش‌های انتخابی ارسال شود.

  • دستور سیستمی به فارسی نوشته شده و خروجی قبل از ذخیره با sanitize_textarea_field() پاک‌سازی می‌شود.

برای توسعه‌ی این ایده می‌توانید به جای چکیده، عنوان متا، متن جایگزین تصاویر یا برچسب‌ها را تولید کنید. افزونه‌ی رسمی AI دقیقاً همین کارها را با رابط کاربری آماده انجام می‌دهد و اگر نیاز به سفارشی‌سازی ندارید نصب آن سریع‌تر است.

مرحله ۴: Abilities API و MCP: وقتی هوش مصنوعی با سایت شما کار می‌کند

تا اینجا سایت از مدل چیزی می‌خواست. در مسیر دوم، یک عامل هوش مصنوعی (مثلاً Claude در دسکتاپ یا Cursor در ویرایشگر کد) با سایت شما کار می‌کند: محصول می‌سازد، محتوا را بررسی می‌کند یا گزارش می‌گیرد. برای اینکه این کار امن و قابل کنترل باشد وردپرس Abilities API را ساخته است. هر قابلیت یک نام، یک توضیح، اسکیمای ورودی و خروجی و یک تابع بررسی مجوز دارد.

جریان Abilities API و MCP Adapter در وردپرس برای اتصال عامل‌های هوش مصنوعی

قابلیت‌ها در رجیستری ثبت می‌شوند و از طریق REST یا MCP Adapter در اختیار عامل‌ها قرار می‌گیرند. هیچ اجرایی بدون عبور از permission_callback انجام نمی‌شود.

ثبت یک قابلیت

مثال زیر قابلیتی ثبت می‌کند که آخرین نوشته‌های منتشرشده را برمی‌گرداند. دقت کنید که دسته‌بندی روی هوک wp_abilities_api_categories_init و خود قابلیت روی هوک wp_abilities_api_init ثبت می‌شود:

// دسته‌بندی قابلیت‌ها روی هوک مخصوص خودش ثبت می‌شود.
add_action( 'wp_abilities_api_categories_init', function () {
	wp_register_ability_category( 'wpkala', array(
		'label'       => 'وردپرس کالا',
		'description' => 'قابلیت‌های سفارشی این سایت',
	) );
} );

add_action( 'wp_abilities_api_init', function () {
	wp_register_ability( 'wpkala/latest-posts', array(
		'label'               => 'آخرین نوشته‌ها',
		'description'         => 'فهرست آخرین نوشته‌های منتشرشده را با عنوان و لینک برمی‌گرداند.',
		'category'            => 'wpkala',
		'input_schema'        => array(
			'type'       => 'object',
			'properties' => array(
				'count' => array( 'type' => 'integer', 'minimum' => 1, 'maximum' => 20, 'default' => 5 ),
			),
		),
		'output_schema'       => array(
			'type'  => 'array',
			'items' => array(
				'type'       => 'object',
				'properties' => array(
					'id'    => array( 'type' => 'integer' ),
					'title' => array( 'type' => 'string' ),
					'url'   => array( 'type' => 'string', 'format' => 'uri' ),
				),
			),
		),
		'execute_callback'    => function ( $input ) {
			$posts = get_posts( array( 'numberposts' => $input['count'] ?? 5, 'post_status' => 'publish' ) );
			return array_map( function ( $post ) {
				return array(
					'id'    => $post->ID,
					'title' => get_the_title( $post ),
					'url'   => get_permalink( $post ),
				);
			}, $posts );
		},
		'permission_callback' => function () {
			return current_user_can( 'edit_posts' );
		},
		'meta'                => array(
			'show_in_rest' => true,
			'annotations'  => array( 'readonly' => true ),
		),
	) );
} );

اجرای قابلیت از PHP، REST یا MCP

$ability = wp_get_ability( 'wpkala/latest-posts' );

if ( $ability ) {
	$result = $ability->execute( array( 'count' => 3 ) );
	if ( ! is_wp_error( $result ) ) {
		foreach ( $result as $item ) {
			echo esc_html( $item['title'] ) . "\n";
		}
	}
}

مسیر

کار

GET /wp-json/wp-abilities/v1/abilities

فهرست همه‌ی قابلیت‌هایی که show_in_rest دارند

GET /wp-json/wp-abilities/v1/wpkala/latest-posts

جزئیات و اسکیمای یک قابلیت

GET|POST /wp-json/wp-abilities/v1/wpkala/latest-posts/run

اجرای قابلیت؛ قابلیت‌های readonly با GET و بقیه با POST

برای اتصال عامل‌های خارجی، افزونه‌ی رسمی MCP Adapter قابلیت‌های ثبت‌شده را به ابزارهای MCP تبدیل می‌کند. نسخه‌ی ۰.۷ آن از مهر ۱۴۰۵ در مخزن وردپرس است، از انتقال HTTP و STDIO پشتیبانی می‌کند و هر کلاینت با حساب کاربری وردپرس وارد می‌شود. فقط قابلیت‌هایی که در meta با public علامت خورده‌اند بیرون دیده می‌شوند و permission_callback پیش از هر اجرا با همان کاربر بررسی می‌شود. این افزونه هنوز آزمایشی است و تیم وردپرس نسخه‌ی پایدار ۱.۰ را هدف گذاشته است.

نسخه‌ی جاوااسکریپت Abilities API هم از وردپرس ۷.۰ در هسته است و با تابع executeAbility() از بسته‌ی @wordpress/abilities می‌توانید همان قابلیت‌ها را داخل ویرایشگر بلاکی یا پالت فرمان اجرا کنید.

کنترل، امنیت و هزینه

خاموش کردن کامل هوش مصنوعی

اگر نمی‌خواهید هیچ افزونه‌ای روی سایت از AI Client استفاده کند، یک ثابت در wp-config.php کافی است. این ثابت پیش از هر فیلتر و افزونه‌ای خوانده می‌شود و قابل دور زدن نیست:

// wp-config.php : خاموش کردن کامل هوش مصنوعی. هیچ فیلتری نمی‌تواند آن را روشن کند.
define( 'WP_AI_SUPPORT', false );

برای کنترل نرم‌تر از فیلتر wp_supports_ai استفاده کنید. این فیلتر در هر درخواست اجرا می‌شود و می‌توانید هوش مصنوعی را فقط برای نقش‌های خاص فعال نگه دارید:

// فقط برای مدیران فعال باشد
add_filter( 'wp_supports_ai', function ( $supported ) {
	return $supported && current_user_can( 'manage_options' );
} );

فیلتر کردن تک‌تک درخواست‌ها

فیلتر wp_ai_client_prevent_prompt پیش از ارسال هر درخواست اجرا می‌شود و یک نسخه‌ی فقط‌خواندنی از سازنده‌ی درخواست را می‌گیرد. اگر true برگردانید درخواست ارسال نمی‌شود و بررسی‌های پشتیبانی هم false می‌شوند تا افزونه‌ها رابط مربوطه را پنهان کنند:

add_filter( 'wp_ai_client_prevent_prompt', function ( $prevent, $builder ) {
	// نمونه: کاربرانی که نمی‌توانند نوشته ویرایش کنند حق ارسال درخواست ندارند.
	if ( ! current_user_can( 'edit_posts' ) ) {
		return true;
	}
	return $prevent;
}, 10, 2 );

مدیریت هزینه

  • هسته هیچ سقف هزینه، سقف تعداد درخواست یا بودجه‌ی جداگانه برای هر افزونه ندارد. سقف را در پنل ارائه‌دهنده تعیین کنید.

  • برای هر سایت یک کلید جداگانه بسازید تا بتوانید مصرف را جدا ببینید و در صورت نشت فقط همان کلید را باطل کنید.

  • در کد همیشه using_max_tokens() بگذارید و ورودی‌های بلند را کوتاه کنید.

  • نتیجه‌های تکراری را با Transients یا متای نوشته کش کنید. تولید دوباره‌ی یک خلاصه برای نوشته‌ای که تغییر نکرده پول دور ریختن است.

  • افزونه‌ی رسمی AI یک بخش ثبت درخواست‌ها (AI Request Logging) دارد که برای پیدا کردن افزونه‌ی پرمصرف مفید است.

حریم خصوصی داده‌ها

  • هر متنی که به wp_ai_client_prompt() می‌دهید به سرور ارائه‌دهنده می‌رود. اطلاعات شخصی کاربران، آدرس‌ها و شماره‌ها را قبل از ارسال حذف کنید.

  • به کاربران سایت بگویید کدام قابلیت‌ها از سرویس خارجی استفاده می‌کنند و این را در سیاست حریم خصوصی بیاورید.

  • برای داده‌های حساس از مدل محلی با Ollama استفاده کنید تا هیچ داده‌ای از سرور خارج نشود.

نکته‌های ویژه برای سایت‌های ایرانی

چند واقعیت فنی را باید پیش از انتخاب ارائه‌دهنده در نظر بگیرید:

  • درخواست‌ها از سرور ارسال می‌شوند. اگر هاست شما داخل ایران است، دسترسی مستقیم به API شرکت‌های Anthropic، Google و OpenAI معمولاً برقرار نیست. سه راه عملی وجود دارد: سایت را روی هاست خارج از ایران میزبانی کنید، از یک ارائه‌دهنده‌ی واسط که از ایران قابل دسترس است استفاده کنید یا مدل محلی اجرا کنید.

  • مدل محلی با Ollama. افزونه‌ی AI Provider for Ollama روی وردپرس ۷ بدون کلید کار می‌کند و مدل‌های متن‌باز را روی سرور خودتان اجرا می‌کند. برای سرورهای ایرانی و داده‌های حساس بهترین گزینه است، به شرط اینکه سرور حافظه و پردازنده‌ی کافی داشته باشد.

  • ارائه‌دهنده‌ی واسط. هر سرویسی که API سازگار با OpenAI ارائه دهد می‌تواند از طریق افزونه‌های جامعه (مثل OpenRouter) یا یک افزونه‌ی ارائه‌دهنده‌ی سفارشی به AI Client وصل شود. قبل از خرید، سازگاری با وردپرس ۷ و سیاست نگهداری داده‌ی آن سرویس را بپرسید.

  • هزینه به دلار است. با using_max_tokens() و کش کردن نتایج، مصرف را از همان روز اول کنترل کنید.

  • کیفیت فارسی. دستور سیستمی را به فارسی بنویسید و صراحتاً بخواهید خروجی فقط فارسی و بدون مقدمه باشد. مدل‌های بزرگ‌تر در فارسی نتیجه‌ی بهتری می‌دهند؛ برای کارهای ساده مثل عنوان و خلاصه مدل‌های سبک‌تر کافی و ارزان‌ترند.

  • سرعت پاسخ. درخواست‌های هوش مصنوعی چند ثانیه طول می‌کشند. آن‌ها را هرگز در مسیر نمایش صفحه برای بازدیدکننده اجرا نکنید. از پیشخوان، کران‌جاب یا Action Scheduler استفاده کنید.

تغییرات از وردپرس ۷.۰ به بعد

جدول زمانی قابلیت‌های هوش مصنوعی وردپرس از نسخه ۷.۰ تا ۷.۲

مسیر هوش مصنوعی در وردپرس. موارد نسخه‌ی ۷.۲ بر اساس برنامه‌ی اعلام‌شده‌ی تیم هسته است و تا انتشار نهایی ممکن است تغییر کند.

وردپرس ۷.۰ (اردیبهشت ۱۴۰۵)

AI Client، صفحه‌ی Connectors و نسخه‌ی جاوااسکریپت Abilities API به هسته رسیدند. در همین نسخه ثابت WP_AI_SUPPORT و فیلترهای wp_supports_ai و wp_ai_client_prevent_prompt اضافه شدند. افزونه‌ی مستقل WP AI Client که پیش از این برای تست منتشر شده بود منسوخ اعلام شد؛ افزونه‌هایی که کتابخانه‌ی PHP AI Client را داخل خودشان بسته‌بندی کرده بودند باید آن را حذف کنند، چون بارگذاری دوباره‌ی همان کلاس‌ها روی وردپرس ۷ خطای مهلک می‌دهد. نسخه‌های ۷.۰.۱ تا ۷.۰.۳ اصلاحات پایداری آوردند و افزونه‌ی AI اکنون حداقل ۷.۰.۳ را لازم دارد.

وردپرس ۷.۱ (مرداد ۱۴۰۵)

تغییرات هوش مصنوعی در ۷.۱ بیشتر زیر پوست بود. Abilities API سخت‌گیرتر و منظم‌تر شد: فیلتر دقیق‌تر قابلیت‌ها، نمایش متادیتا در REST و کمک‌تابع‌های یکپارچه برای JSON Schema. دو قابلیتی که برای این نسخه برنامه‌ریزی شده بود به آن نرسید: پاسخ استریمی (نمایش کلمه‌به‌کلمه‌ی پاسخ) و embeddings برای جست‌وجوی معنایی. اگر افزونه‌ای می‌سازید روی این دو حساب نکنید تا در هسته منتشر شوند. بقیه‌ی ۷.۱ به استایل واکنش‌گرا در ویرایشگر، بلاک‌های Tabs و Playlist و همکاری تیمی اختصاص داشت.

افزونه‌های همراه: AI و MCP Adapter

بخش عمده‌ی پیشرفت بعد از ۷.۰ بیرون از هسته و در دو افزونه‌ی رسمی اتفاق افتاد. افزونه‌ی AI در نسخه‌های ۱.۳ و ۱.۴ ترجمه‌ی محتوا، تولید اسلاگ، امتیازدهی دیدگاه‌ها، جدول ذخیره‌ی embeddings، تأیید اتصال‌ها و رمزنگاری کلیدها را اضافه کرد و اکنون بیش از شصت هزار نصب فعال دارد. MCP Adapter هم با نسخه‌ی ۰.۷ به افزونه‌ی رسمی مخزن تبدیل شد و از آخرین نسخه‌ی پروتکل MCP پشتیبانی می‌کند. این الگو ادامه خواهد داشت: قابلیت‌ها اول در افزونه آزمایش می‌شوند و بعد به هسته می‌روند.

وردپرس ۷.۲ (برنامه‌ریزی برای آذر ۱۴۰۵)

انتشار نهایی ۷.۲ برای ۱۷ آذر ۱۴۰۵ (۸ دسامبر ۲۰۲۶) زمان‌بندی شده و بتای اول آن ۲۸ مهر منتشر می‌شود. مهم‌ترین موضوع هوش مصنوعی در این نسخه Secrets API است: ذخیره‌ی رمزنگاری‌شده‌ی کلیدها با توابع wp_set_secret() و wp_get_secret() که مشکل کلیدهای بدون رمز در جدول options را حل می‌کند. تیم هوش مصنوعی همچنین قابلیت‌های استاندارد CRUD برای محتوا، کاربران و تنظیمات را هدف گذاشته و تلاش می‌کند embeddings و استریم را این بار به هسته برساند. همه‌ی این موارد تا پیش از بتای اول نهایی می‌شوند؛ پس برای تصمیم‌های فنی به یادداشت‌های رسمی انتشار تکیه کنید نه به برنامه.

نسخه

تاریخ

مهم‌ترین تغییرات هوش مصنوعی

۷.۰

۳۰ اردیبهشت ۱۴۰۵

AI Client، Connectors، Abilities جاوااسکریپت، ثابت WP_AI_SUPPORT

۷.۰.۳

تابستان ۱۴۰۵

اصلاحات پایداری؛ حداقل نسخه برای افزونه‌ی AI

۷.۱

۲۸ مرداد ۱۴۰۵

بهبود Abilities API؛ استریم و embeddings به تعویق افتاد

AI 1.4 و MCP 0.7

مهر ۱۴۰۵

ترجمه، اسلاگ، embeddings در افزونه؛ MCP Adapter در مخزن رسمی

۷.۲

۱۷ آذر ۱۴۰۵ (برنامه)

Secrets API، قابلیت‌های CRUD، embeddings و استریم در دست بررسی

AI Client هسته یا افزونه‌های مستقل هوش مصنوعی؟

افزونه‌های تولید محتوا با هوش مصنوعی از قبل وجود داشتند و هرکدام کلید و تنظیمات خودشان را داشتند. با وردپرس ۷ باید دوباره تصمیم بگیرید:

معیار

AI Client هسته

افزونه‌ی مستقل با کلید خودش

کلید API

یک بار در Connectors، برای همه‌ی افزونه‌ها

جداگانه در هر افزونه

تعویض ارائه‌دهنده

بدون تغییر کد

وابسته به پشتیبانی افزونه

به‌روزرسانی با API جدید

با افزونه‌ی ارائه‌دهنده‌ی رسمی

وابسته به سازنده‌ی افزونه

رابط کاربری آماده

ندارد؛ باید بسازید یا افزونه‌ی AI را نصب کنید

معمولاً دارد

کنترل متمرکز (خاموش کردن، فیلتر)

بله، برای همه‌ی افزونه‌ها

هر افزونه جداگانه

سازگاری با وردپرس قدیمی

فقط ۷.۰ به بالا

بیشتر نسخه‌ها

جمع‌بندی عملی: اگر افزونه می‌سازید یا سایت را نگهداری می‌کنید، از این به بعد AI Client هسته را مبنا بگیرید و از افزونه‌هایی که با آن سازگار شده‌اند استفاده کنید. افزونه‌های قدیمی تا زمانی که سازنده‌شان مهاجرت نکرده کار می‌کنند اما مزیت کلید مشترک و کنترل متمرکز را ندارند.

خطاهای رایج و راه‌حل

نشانه

علت احتمالی

راه‌حل

generate_text() همیشه WP_Error برمی‌گرداند

هیچ ارائه‌دهنده‌ای فعال نیست یا کلید ذخیره نشده

تنظیمات › Connectors را باز کنید و وضعیت «متصل» را ببینید. با is_supported_for_text_generation() قبل از ارسال بررسی کنید.

خطای مهلک بعد از ارتقا به وردپرس ۷

افزونه‌ای کتابخانه‌ی PHP AI Client را داخل خودش بارگذاری می‌کند

افزونه را به‌روز کنید یا بسته‌ی wordpress/php-ai-client را از آن حذف کنید. هسته این کلاس‌ها را خودش بارگذاری می‌کند.

کلید در صفحه‌ی Connectors قابل ویرایش نیست

کلید از متغیر محیطی یا ثابت خوانده می‌شود

این رفتار درست است. کلید را در همان منبع تغییر دهید.

تابع wp_ai_client_prompt تعریف نشده

وردپرس پایین‌تر از ۷.۰ یا هوش مصنوعی با WP_AI_SUPPORT خاموش شده

نسخه را بررسی کنید و پیش از استفاده function_exists() و wp_supports_ai() را چک کنید.

پاسخ به انگلیسی یا با مقدمه‌ی اضافه

دستور سیستمی ندارد

با using_system_instruction() زبان و قالب خروجی را صریح تعیین کنید.

زمان پاسخ طولانی و تایم‌اوت

اجرای درخواست در مسیر نمایش صفحه یا مدل سنگین

درخواست را به پس‌زمینه ببرید و using_max_tokens() را کم کنید.

اتصال از سرور ایرانی برقرار نمی‌شود

محدودیت دسترسی به API ارائه‌دهنده

میزبانی خارج از ایران، ارائه‌دهنده‌ی واسط یا Ollama محلی.

قابلیت در MCP دیده نمی‌شود

در meta با public علامت نخورده یا کاربر مجوز ندارد

متای قابلیت و permission_callback را بررسی کنید و با همان کاربر تست کنید.

جمع‌بندی

وردپرس ۷ هوش مصنوعی را به کاربر تحمیل نمی‌کند؛ زیرساختی می‌دهد که اگر خواستید یک بار کلید بدهید و همه‌ی افزونه‌ها از همان استفاده کنند. مسیر کار همیشه همین چهار قدم است: نصب ارائه‌دهنده و ثبت کلید در Connectors، بررسی پشتیبانی با is_supported_for_text_generation()، ساخت درخواست با wp_ai_client_prompt() و مدیریت خطا با WP_Error. اگر قرار است عامل‌های هوش مصنوعی با سایت کار کنند، قابلیت‌ها را با Abilities API ثبت کنید و با MCP Adapter در اختیارشان بگذارید.

سه کار را از همین امروز انجام دهید: کلید را به جای دیتابیس در wp-config.php تعریف کنید، در پنل ارائه‌دهنده سقف هزینه بگذارید و افزونه‌هایی را که کتابخانه‌ی AI Client را داخل خودشان دارند به‌روز کنید. برای تغییرات بعدی هم یادداشت‌های انتشار ۷.۲ در آذر ۱۴۰۵ را دنبال کنید، چون Secrets API و قابلیت‌های CRUD شکل کار با کلیدها و عامل‌ها را دوباره تغییر می‌دهد.

سؤال‌های متداول

آیا وردپرس ۷ بدون تنظیم کردن چیزی داده‌های سایت را به هوش مصنوعی می‌فرستد؟

خیر. هسته هیچ ارائه‌دهنده یا کلیدی همراه ندارد و تا زمانی که مدیر سایت افزونه‌ی ارائه‌دهنده نصب نکند و کلید وارد نکند هیچ درخواستی به سرویس خارجی ارسال نمی‌شود. با تعریف ثابت WP_AI_SUPPORT با مقدار false می‌توانید این قابلیت را به طور کامل قفل کنید.

کلید API را کجا وارد کنم و کدام روش امن‌تر است؟

سه راه وجود دارد: صفحه‌ی تنظیمات › Connectors، ثابت PHP در wp-config.php و متغیر محیطی سرور. وردپرس به همین ترتیب از متغیر محیطی به سمت دیتابیس جست‌وجو می‌کند. کلیدهای ذخیره‌شده در دیتابیس رمزنگاری نمی‌شوند، پس برای سایت واقعی ثابت یا متغیر محیطی را انتخاب کنید.

فرق AI Client با افزونه‌های هوش مصنوعی قبلی چیست؟

AI Client یک رابط مشترک در هسته است که هر افزونه‌ای می‌تواند از آن استفاده کند و کلید از یک جا تأمین می‌شود. افزونه‌های قدیمی هرکدام کلید و کد اتصال خودشان را دارند. با AI Client می‌توانید ارائه‌دهنده را بدون تغییر کد عوض کنید و هوش مصنوعی را برای همه‌ی افزونه‌ها یک‌جا خاموش یا محدود کنید.

آیا می‌توانم از مدل محلی یا سرویس ایرانی استفاده کنم؟

بله. افزونه‌ی AI Provider for Ollama مدل‌های متن‌باز را روی سرور خودتان بدون کلید اجرا می‌کند. هر سرویسی که API سازگار ارائه دهد هم می‌تواند با یک افزونه‌ی ارائه‌دهنده به AI Client وصل شود. برای سرورهای داخل ایران که به API شرکت‌های خارجی دسترسی ندارند این دو راه عملی‌ترین گزینه‌اند.

Abilities API چه ربطی به هوش مصنوعی دارد؟

Abilities API راهی استاندارد برای تعریف کارهایی است که سایت می‌تواند انجام دهد، همراه با اسکیما و بررسی مجوز. عامل‌های هوش مصنوعی مثل Claude یا Cursor از طریق MCP Adapter این قابلیت‌ها را می‌بینند و با حساب کاربری وردپرس اجرا می‌کنند. بدون این لایه، هر عامل باید مستقیم به دیتابیس یا REST دسترسی می‌گرفت که نه امن است و نه قابل کنترل.

استریم پاسخ و جست‌وجوی معنایی (embeddings) در وردپرس ۷.۱ هست؟

خیر. هر دو برای ۷.۱ برنامه‌ریزی شده بود اما به آن نسخه نرسید. ذخیره‌ی embeddings فعلاً در افزونه‌ی رسمی AI نسخه‌ی ۱.۴ وجود دارد و تیم هسته تلاش می‌کند هر دو قابلیت را به وردپرس ۷.۲ برساند. پیش از اتکا به آن‌ها یادداشت‌های رسمی انتشار را بررسی کنید.

هزینه‌ی استفاده از هوش مصنوعی در وردپرس چقدر است؟

خود وردپرس و افزونه‌های رسمی رایگان‌اند. هزینه فقط بابت درخواست‌هایی است که به ارائه‌دهنده می‌فرستید و بر اساس تعداد توکن محاسبه می‌شود. هسته هیچ سقف هزینه‌ای ندارد، پس سقف را در پنل ارائه‌دهنده تعیین کنید، در کد using_max_tokens بگذارید و نتایج تکراری را کش کنید.

  • ۱۹ دقیقه مطالعه
نویسندهمدیریت