اتصال n8n به وردپرس: راهنمای کامل با Application Password
اتصال n8n به وردپرس یعنی ساختن یک Application Password توی وردپرس و وصلش کردن به گرهی HTTP Request یا Credential اختصاصی وردپرس توی n8n — بعدش میتونی پست بسازی، لیست رسانهها رو بگیری یا مدیا آپلود کنی بدون لاگین دستی به وردپرس.
وردپرس یک REST API کامل داره (مسیر /wp-json/wp/v2/) و از نسخهی ۵.۶ به بعد روش سادهترین راه احراز هویت رو داره: Application Password. دیگه نیازی به افزونهی جانبی یا رمز عبور کاربر نیست.
چطور Application Password بسازیم؟
از پنل وردپرس برو: کاربران → پروفایل کاربری که قراره ازش استفاده کنی و پایین صفحه بخش «Application Passwords» رو پیدا کن. یک نام دلخواه برای این اتصال بزن (مثلاً «n8n») و دکمهی «Add New Application Password» رو بزن. وردپرس یک رمز ۴-بخشی میسازه و نشونش میده؛ همون لحظه کپیش کن، چون دوباره نشون داده نمیشه.
توی n8n کدوم Credential رو انتخاب کنیم؟
Credential اختصاصی «WordPress API» رو انتخاب کن، نه «HTTP Basic Auth» عمومی — این دقیقاً همون اشتباهیه که خودمون توی یک از ورکفلوهای داخلیمون کردیم و بعداً مجبور شدیم اصلاحش کنیم. با Credential HTTP Basic Auth هم میشه کار کرد و ظاهراً وصل میشه، اما Credential WordPress API مخصوص همین کاره و مشکلیابی رو سادهتر میکنه. در فیلد Username، یوزرنیم وردپرس، و در فیلد Password، همون رمز ۴-بخشی رو بزن (با یا بدون فاصلهها، فرقی نداره).
چه endpointهایی بیشتر کاربرد دارند؟
برای کارهای روزمره — پیداکردن پست، حذف مدیا، بررسی وضعیت — endpointهای REST وردپرس از یک الگوی ثابت پیروی میکنن. مثال واقعی از یکی از ورکفلوهای داخلی خودکارا:
- پیداکردن پست با اسلاگ:
GET /wp-json/wp/v2/posts?slug=your-slug&status=any - حذف پست (بدون رد سطل زباله):
DELETE /wp-json/wp/v2/posts/{id}?force=true - حذف مدیا/تصویر:
DELETE /wp-json/wp/v2/media/{id}?force=true - ساخت پست جدید:
POST /wp-json/wp/v2/posts
هشدار ۱ — status=any: این پارامتر برای دیدن پیشنویسها و پستهای منتشرنشده لازمه، ولی به دسترسی کاربر حساسه. توی تجربهی خودمون حتی با کاربر Editor هم خطای 401 گرفتیم؛ اگه فقط پستهای منتشرشده رو لازم داری، این پارامتر رو حذف کن.
هشدار ۲ — force=true: این پارامتر یعنی حذف واقعی؛ چیزی به سطل زباله نمیره و برگشتناپذیره. برای پستها اول بدون این پارامتر تست کن (پست فقط به زبالهدان میره). برای رسانهها وردپرس زبالهدان نداره و بدون force=true درخواست حذف خطا برمیگردونه؛ پس قبل از حذف هر رسانه، مطمئن شو جای دیگهای استفاده نمیشه.
خطاهای رایج اتصال n8n به وردپرس
| خطا | علتهای واقعی | راهحل |
|---|---|---|
| 401 Unauthorized | (۱) روی بعضی سرورهای آپاچی و LiteSpeed (بسته به نحوهی اجرای PHP) هدر Authorization قبل از رسیدن به وردپرس حذف میشه (۲) افزونه یا فایروال امنیتی درخواستهای REST رو بلاک کرده (۳) درخواست با status=any و کاربری که دسترسی کافی نداره | برای (۱) دو خط زیر جدول رو به .htaccess اضافه کن. برای (۲) IP سرور n8n رو در افزونهی امنیتی به whitelist اضافه کن. برای (۳) status=any رو بردار. |
| 403 Forbidden روی آپلود مدیا | نقش Author در وردپرس بهصورت پیشفرض مجوز آپلود مدیاست (upload_files داره)؛ علت واقعی معمولاً افزونهی امنیتیه که آپلود REST API رو مسدود کرده | افزونههای امنیتی و فایروال رو برای مسیر wp-json و wp-admin/admin-ajax.php چک کن |
| رمز بعد از کپی کار نمیکنه | فاصله یا کاراکتر اضافه حین کپی جا افتاده | رمز رو دقیقاً همونطور که وردپرس نشون داد کپی کن |
کد .htaccess برای مورد (۱) — قبل از بلوک قوانین خود وردپرس اضافه کن:
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]نکتهی مهم اگر از Webhook هم استفاده میکنی (مثلاً برای فرمهای وردپرس): n8n دو تا URL جدا میده — یکی برای تست (Test URL) و یکی برای استفادهی واقعی (Production URL). آدرس تست فقط وقتی کار میکنه که تب n8n باز باشد و دکمهی Listen زده شده باشد. اگر این آدرس رو توی سایت واقعیت جا بذاری، بهمحض بستن اون تب اتوماسیون از کار میافته. قبل از استفادهی واقعی، ورکفلو رو حتماً Activate کن و آدرس رو از تب «Production URL» بردار.
چطور از n8n پست با تصویر شاخص بسازیم؟
دو مرحلهست: اول تصویر رو به کتابخونهی رسانه آپلود کن و id بگیر، بعد اون id رو موقع ساخت پست توی فیلد featured_media بفرست. این رایجترین سناریوی انتشار خودکار محتواست و بیشتر خطاها توی مرحلهی اول اتفاق میافتن.
- آپلود تصویر: یک گرهی HTTP Request با متد POST به
/wp-json/wp/v2/media. فایل رو بهصورت Binary بفرست و هدرContent-Disposition: attachment; filename="image.webp"رو اضافه کن؛ بدون این هدر وردپرس فایل رو نمیپذیره. - گرفتن id: پاسخ این درخواست یک آبجکت رسانهست؛ فیلد
idهمون چیزیه که لازم داری. - ساخت پست: POST به
/wp-json/wp/v2/postsبا فیلدهایtitle،content،statusوfeatured_mediaبرابر id مرحلهی قبل. - متن جایگزین تصویر: alt رو با یک درخواست POST به
/wp-json/wp/v2/media/{id}و فیلدalt_textتنظیم کن — برای سئو مهمه و توی اتوماسیونها زیاد جا میافته.
دو نکته از تجربهی خودمون: اول، پستها رو با status: draft بساز و بعد از بازبینی منتشر کن؛ اتوماسیونی که مستقیم منتشر میکنه، هر خطای ورودی رو هم مستقیم به سایت میبره. دوم، برای پیدا کردن تصاویر یک پست به media?parent=شناسهیپست تکیه نکن؛ والد بیشتر رسانهها در وردپرس صفر ثبت میشه و نتیجه ناقص برمیگرده. id تصویر رو همون موقع آپلود جایی ذخیره کن (مثلاً در یک شیت یا دیتابیس).
سوالهای متداول
Application Password با رمز ورود کاربر فرق داره؟
بله، کاملاً مجزاست. جای رمز ورود رو میزنه و محدوده به یک ابزار/سرویس؛ هر وقت بخوایی میتونی بدون تغییر رمز اصلی، فقط همون یکی رو لغو کنی.
آیا میشه از پلاگین بهجای REST API استفاده کرد؟
بله، بعضی از افزونهها (مثل WPForms، WooCommerce) API اختصاصی خودشون رو دارند. برای پست/صفحه/مدیا، همین core REST API کافیه.
چطور بفهمم چه فیلدهایی رو میتونم توی هر درخواست بفرستم؟
اگر از Credential WordPress API استفاده کنی، اول یک درخواست GET ساده (مثلاً همین پیداکردن پست با اسلاگ) بزن و توی بخش Output نتیجه رو ببینی.
با کدوم نقش وردپرسی باید Application Password بسازم؟
اگه فقط قراره مطلب بخونی/بنویسی و پست خودت رو مدیریت کنی، نقش Author کافیه. اگه قراره پستهای دیگران رو هم ویرایش کنی یا حذف کنی، به دسترسی Editor نیاز داری.
اگه بعد از این مراحل هنوز خطا میگیری یا میخوای کسی کنارت تستش کنه، با تیم خودکارا تماس بگیر. اگه فروشگاهت روی ووکامرسه، راهنمای اتصال n8n به ووکامرس رو هم ببین — اونجا احراز هویت با کلید Consumer Key/Secret خود ووکامرسه، نه Application Password.
نمیخواهی خودت بسازی؟ اگه ترجیح میدی این اتصال رو یه تیم برات راه بندازه، مشاورهی پیادهسازی هوش مصنوعی در کسبوکار رو ببین.




