
برای افزودن خلاصهسازی، پیشنهاد متن یا دستهبندی به وردپرس لازم نیست کلید مدل را به مرورگر بدهید. افزونه باید درخواست را در سمت سرور بگیرد، مجوز و Nonce را بررسی کند و سپس با یک کلید محدود به API هوش مصنوعی پاستا وصل شود.
معماری پیشنهادی
- دکمه یا Sidebar در ویرایشگر درخواست را میسازد.
- REST Route وردپرس Capability و Nonce را کنترل میکند.
- کد PHP درخواست مدل را از سرور ارسال میکند.
- خروجی بهصورت Draft برمیگردد و کاربر آن را تأیید میکند.
API افزونه وردپرس را با بودجه مستقل بسازید.
مدل مجاز، سقف هزینه و گزارش مصرف را برای همین قابلیت مشخص کنید.
کلید را کجا نگه داریم؟
کلید را داخل JavaScript، Option عمومی یا Repository نگذارید. آن را در Environment یا Secret میزبان قرار دهید و کلید را فقط به مدل لازم محدود کنید. timeout، پاسخ نامعتبر و Rate Limit را صریح مدیریت کنید.
نمونه درخواست سمت سرور
$response = wp_remote_post($base_url . '/chat/completions', [
'headers' => ['Authorization' => 'Bearer ' . $api_key, 'Content-Type' => 'application/json'],
'timeout' => 30,
'body' => wp_json_encode(['model' => $model, 'messages' => $messages]),
]);شناسه مدل و Base URL نهایی را از پنل و مستندات API بردارید.
کیفیت و هزینه
Prompt را کوتاه و قابلآزمون نگه دارید، خروجی را قبل از ذخیره Sanitise کنید و تعداد توکن و خطا را بدون متن حساس Log کنید. برای هر قابلیت یک کلید جدا کمک میکند هزینه واقعی همان ویژگی را بسنجید.
انتشار افزونه
راهنمای رسمی ساخت افزونه AI وردپرس را مبنا قرار دهید. افزونه را ابتدا روی Stage در هاست وردپرس آزمایش و فقط بعد از Backup منتشر کنید.
ساختار افزونهای که در production قابل نگهداری باشد
کد رابط و درخواست مدل را از هم جدا کنید. JavaScript فقط متن انتخابشده و تنظیمات لازم را به REST Route وردپرس میفرستد. Route، Nonce و Capability را کنترل میکند، ورودی را محدود میسازد و Service سمت سرور را فرا میخواند. Service مسئول API، timeout و تبدیل خطاست. این جداسازی تست و تعویض مدل را ساده میکند.
register_rest_route('paasta-ai/v1', '/draft', [
'methods' => 'POST',
'permission_callback' => function ($request) {
return current_user_can('edit_posts') &&
wp_verify_nonce($request->get_header('X-WP-Nonce'), 'wp_rest');
},
'callback' => 'paasta_ai_create_draft',
]);
در Callback طول ورودی، نوع محتوا و شناسه نوشته را بررسی کنید. خروجی مدل را HTML قابل اعتماد فرض نکنید؛ بسته به کاربرد از sanitize_textarea_field یا allowlist محدود wp_kses استفاده کنید.
اتصال به API پاستا
- در پنل کلیدهای AI کلیدی مخصوص افزونه بسازید.
- مدلهای فعال را در کاتالوگ مدلها مقایسه و شناسه مدل را از همانجا بردارید.
- Base URL و قرارداد درخواست را با مستندات API پاستا تطبیق دهید.
- کلید را در Secret یا متغیر محیطی هاست نگه دارید. آن را داخل Option قابل خواندن یا فایل افزونه نگذارید.
- یک کلید جدا برای Stage داشته باشید تا تست، بودجه production را مصرف نکند.
مدیریت خطا و تجربه کاربر
مدل ممکن است دیر پاسخ دهد، Rate Limit شود یا JSON ناقص برگرداند. رابط ویرایشگر باید وضعیت «در حال تولید»، امکان لغو و پیام خطای قابل اقدام داشته باشد. Retry خودکار را محدود کنید؛ سه تلاش پنهانی میتواند هزینه را سه برابر کند. اگر پاسخ نرسید، متن کاربر نباید از بین برود.
برای کار طولانی، درخواست را به صف بسپارید و نتیجه را با Polling کنترلشده برگردانید. پردازش پسزمینه را میتوان روی Worker مستقل پاستا اجرا کرد تا timeout PHP ویرایشگر را محدود نکند.
Eval قبل از انتشار
حداقل بیست نمونه واقعی اما بدون داده حساس آماده کنید: متن کوتاه، متن بلند، فارسی و انگلیسی مخلوط، ورودی خالی و دستور مخرب داخل محتوا. برای هر نمونه، صحت معنا، لحن، HTML معتبر، زمان و هزینه را ثبت کنید. مدل را با «حس بهتر» انتخاب نکنید؛ هزینه هر خروجی پذیرفتهشده معیار مفیدتری است.
استقرار روی هاست وردپرس پاستا
افزونه را ابتدا روی Stage در هاست وردپرس پاستا نصب کنید. Secret، MySQL و Volume را جدا تنظیم کنید، Backup بگیرید و Log را بدون Prompt حساس فعال کنید. پس از آزمون نقشهای Editor و Author، همان نسخه Tagشده افزونه را به سایت اصلی ببرید. Rollback باید شامل نسخه قبلی افزونه و دیتابیس باشد.
کنترل هزینه و سوءاستفاده
برای هر کاربر و هر قابلیت محدودیت نرخ بگذارید، طول ورودی و خروجی را سقفگذاری کنید و مدلهای گرانتر را فقط برای کارهایی باز کنید که در Eval ارزششان ثابت شده است. درخواست سمت مرورگر هرگز نباید بتواند نام مدل یا Base URL دلخواه وارد کند؛ این مقادیر در سرور allowlist شوند.