ووکامرس
WooCommerce
اتوماسیون فروشگاه ووکامرس: مدیریت سفارش، محصول، مشتری، کوپن، موجودی و ارسال
نمای کلی
نود WooCommerce یکی از مهمترین و پرکاربردترین نودهای n8n برای اتوماسیون تجارت الکترونیک است. WooCommerce یک افزونه رایگان و متنباز برای WordPress است که آن را به یک فروشگاه آنلاین کامل تبدیل میکند. با بیش از ۵ میلیون نصب فعال، WooCommerce محبوبترین پلتفرم فروشگاهساز جهان و بدون شک انتخاب اول فروشگاههای اینترنتی ایرانی است.
چرا WooCommerce محبوبترین در ایران است؟
- رایگان و متنباز: بدون هزینه لایسنس ماهانه
- پشتیبانی کامل فارسی: RTL، تقویم شمسی و زبان فارسی
- درگاههای پرداخت ایرانی: ZarinPal، IDPay، ملت، سامان، پارسیان و دهها درگاه دیگر
- افزونههای فارسی: پست پیشتاز، تیپاکس، پیامک، فاکتور فارسی
- هاست ارزان: روی هر هاست وردپرسی قابل نصب
- سفارشیسازی نامحدود: هزاران افزونه و قالب رایگان و حرفهای
- جامعه بزرگ ایرانی: آموزش، پشتیبانی و توسعهدهندگان فراوان
قابلیتهای کلیدی نود:
- مدیریت سفارشات: دریافت، ایجاد، بهروزرسانی و تغییر وضعیت
- مدیریت محصولات: CRUD کامل محصولات ساده و متغیر
- تنوعهای محصول (Variations): سایز، رنگ، مدل و قیمتهای مختلف
- مدیریت مشتریان: ایجاد، ویرایش و جستجوی مشتریان
- دستهبندیها (Categories): ساختار درختی دستهبندی محصولات
- تگها (Tags): برچسبگذاری محصولات
- کوپن تخفیف (Coupons): ایجاد و مدیریت کدهای تخفیف
- تنظیمات ارسال (Shipping): مناطق و روشهای ارسال
- مالیات (Tax): نرخها و کلاسهای مالیاتی
- نظرات محصول (Reviews): مدیریت بازخوردهای مشتریان
- گزارشها (Reports): آمار فروش، محصولات پرفروش و مشتریان
WooCommerce Trigger (Webhook):
- سفارش جدید (order.created)
- تغییر وضعیت سفارش (order.updated)
- سفارش تکمیل شده (order.completed)
- محصول جدید (product.created)
- بهروزرسانی محصول (product.updated)
- مشتری جدید (customer.created)
- کوپن جدید (coupon.created)
- بازپرداخت (order.refunded)
مزیت WooCommerce نسبت به Shopify برای بازار ایران:
- درگاه پرداخت ایرانی: پشتیبانی مستقیم از ZarinPal، IDPay، ملت و دهها درگاه
- هزینه کمتر: بدون کمیسیون ماهانه (Shopify از ۲۹ دلار/ماه شروع میشود)
- کنترل کامل: سرور و دادهها کاملاً در اختیار شماست
- زبان فارسی: پشتیبانی بومی از فارسی و تقویم شمسی
- بدون تحریم: نیاز به VPN یا واسطه ندارید
احراز هویت
احراز هویت WooCommerce
روش اصلی: REST API Keys (توصیه شده)
WooCommerce از Consumer Key و Consumer Secret برای احراز هویت API استفاده میکند. این روش امنترین و استانداردترین راه اتصال به n8n است.
#### مرحله ۱: فعالسازی REST API
- 1به پیشخوان وردپرس بروید
- 2مسیر: WooCommerce > تنظیمات > پیشرفته > REST API
- 3روی افزودن کلید (Add Key) کلیک کنید
#### مرحله ۲: ایجاد API Key
- 1توضیحات (Description): یک نام توصیفی وارد کنید، مثلاً "n8n Automation"
- 2کاربر (User): کاربر ادمین خود را انتخاب کنید
- 3سطح دسترسی (Permissions): بسته به نیاز:
- Read: فقط خواندن (برای گزارشها و مانیتورینگ)
- Write: فقط نوشتن
- Read/Write: خواندن و نوشتن (توصیه شده برای اتوماسیون کامل)
- 1روی ایجاد API Key کلیک کنید
#### مرحله ۳: ذخیره کلیدها پس از ایجاد، دو کلید نمایش داده میشود:
Consumer Key: ck_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Consumer Secret: cs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxمهم: Consumer Secret فقط یکبار نمایش داده میشود! آن را فوراً ذخیره کنید.
#### مرحله ۴: تنظیم در n8n
- 1در n8n به Credentials > WooCommerce API بروید
- 2اطلاعات را وارد کنید:
WooCommerce URL: https://your-store.com (بدون /wp-json)
Consumer Key: ck_xxxxxxxx
Consumer Secret: cs_xxxxxxxx- 1Include Credentials in Query: اگر از HTTP استفاده میکنید فعال کنید
- 2Test Connection بزنید
الزامات SSL:
- WooCommerce API روی HTTP فقط با Basic Auth بدون رمزنگاری کار میکند
- برای امنیت، حتماً از HTTPS استفاده کنید
- اگر SSL ندارید، گزینه "Include Credentials in Query" را فعال کنید
- SSL رایگان Let's Encrypt را فعال کنید
تنظیم Webhook برای WooCommerce Trigger:
#### روش ۱: خودکار از طریق n8n
- 1در n8n یک WooCommerce Trigger node اضافه کنید
- 2Event مورد نظر را انتخاب کنید (مثل Order Created)
- 3Workflow را Activate کنید
- 4n8n به صورت خودکار webhook را در WooCommerce ثبت میکند
#### روش ۲: دستی از پیشخوان وردپرس
- 1مسیر: WooCommerce > تنظیمات > پیشرفته > Webhooks
- 2افزودن Webhook کلیک کنید:
نام: n8n Order Notification
وضعیت: فعال
موضوع: سفارش ایجاد شده (Order created)
URL تحویل: https://your-n8n.com/webhook/woocommerce-orders
Secret: یک کلید امن تصادفی
نسخه API: نسخه ۳ WP REST API (v3)- 1ذخیره Webhook کلیک کنید
Topics پرکاربرد Webhook:
order.created → سفارش جدید ثبت شد
order.updated → وضعیت سفارش تغییر کرد
order.deleted → سفارش حذف شد
order.restored → سفارش بازیابی شد
product.created → محصول جدید اضافه شد
product.updated → محصول ویرایش شد
product.deleted → محصول حذف شد
customer.created → مشتری جدید ثبتنام کرد
customer.updated → اطلاعات مشتری تغییر کرد
coupon.created → کوپن جدید ایجاد شد
coupon.updated → کوپن ویرایش شدنکات امنیتی:
- Consumer Key و Secret را به اشتراک نگذارید
- برای هر سرویس (n8n, اپ موبایل و غیره) API Key جداگانه بسازید
- از HTTPS اجباری استفاده کنید
- دسترسیها را به حداقل مورد نیاز محدود کنید
- API Keyهای استفاده نشده را حذف کنید
- Webhook Secret را قوی و تصادفی انتخاب کنید
- لاگهای REST API را دورهای بررسی کنید
تنظیمات ویژه برای فروشگاههای ایرانی:
- Permalink: حتماً از Pretty Permalinks استفاده کنید (نه Plain)
- REST API: مطمئن شوید REST API توسط افزونه امنیتی بلاک نشده
- فایروال: IP سرور n8n را در وایتلیست قرار دهید
- Rate Limiting: اگر افزونه محدودکننده دارید، API calls را مستثنا کنید
عملیاتهای موجود
order-create
ایجاد سفارش جدید در فروشگاه با اطلاعات مشتری و محصولات
order-get
دریافت اطلاعات کامل یک سفارش با شناسه
order-list
دریافت لیست سفارشات با فیلترهای مختلف
order-update
ویرایش اطلاعات سفارش موجود مانند وضعیت، یادداشت و متادیتا
order-delete
حذف سفارش (انتقال به زبالهدان یا حذف دائم)
product-create
ایجاد محصول جدید با عنوان، توضیحات، قیمت، تصاویر و موجودی
product-get
دریافت اطلاعات کامل یک محصول با شناسه
product-update
ویرایش اطلاعات محصول موجود: قیمت، موجودی، توضیحات و تصاویر
product-delete
حذف محصول از فروشگاه
product-variation-create
ایجاد تنوع جدید برای محصول متغیر (سایز، رنگ، مدل)
customer-create
ایجاد مشتری (کاربر) جدید در فروشگاه
customer-get
دریافت اطلاعات کامل یک مشتری
customer-list
دریافت لیست مشتریان با فیلتر و صفحهبندی
customer-update
ویرایش اطلاعات مشتری شامل آدرس، تلفن و متادیتا
coupon-create
ایجاد کوپن تخفیف جدید با شرایط مختلف
category-create
ایجاد دستهبندی جدید برای محصولات با ساختار درختی
tag-create
ایجاد تگ (برچسب) جدید برای محصولات
shipping-zone-list
دریافت لیست مناطق ارسال و روشهای حملونقل تعریفشده
tax-rate-list
دریافت لیست نرخهای مالیاتی تعریفشده در فروشگاه
review-list
دریافت نظرات و امتیازات مشتریان روی محصولات
report-sales
دریافت گزارش آماری فروش با فیلتر بازه زمانی
کاربردهای متداول
کاربردهای رایج
۱. اعلان سفارش جدید در تلگرام
هر بار که سفارش جدیدی ثبت شود، پیام فارسی کاملی با جزئیات سفارش به گروه تلگرام مدیران ارسال شود. ضروریترین اتوماسیون برای هر فروشگاه ایرانی.
WooCommerce Trigger (order.created)
→ Code (فرمت فارسی پیام)
const order = $input.first().json;
const items = order.line_items.map(i =>
'- ' + i.name + ' x' + i.quantity + ' | ' + i.total + ' تومان'
).join('\n');
return {
text: '🛒 سفارش جدید #' + order.number + '\n\n'
+ '👤 ' + order.billing.first_name + ' ' + order.billing.last_name + '\n'
+ '📱 ' + order.billing.phone + '\n'
+ '💰 ' + order.total + ' تومان\n'
+ '📦 ' + items + '\n'
+ '🏠 ' + order.shipping.address_1 + ', ' + order.shipping.city
};
→ Telegram (sendMessage)
ChatId: @my_shop_orders
ParseMode: HTML۲. همگامسازی موجودی با انبار فیزیکی
وقتی موجودی در سیستم انبارداری تغییر کند، موجودی محصول در WooCommerce هم بهروز شود. جلوگیری از فروش محصول تمامشده.
Webhook (تغییر موجودی انبار)
→ WooCommerce (product-update)
productId: از mapping table
stock_quantity: موجودی جدید
stock_status: instock / outofstock
→ IF (stock_quantity < 5)
→ Telegram (هشدار موجودی کم)
Text: "هشدار! موجودی محصول X به Y عدد رسید"
→ IF (stock_quantity == 0)
→ Telegram (هشدار اتمام موجودی)
→ Google Sheets (ثبت در لیست سفارش مجدد)۳. بازیابی سبد خرید رها شده (Abandoned Cart Recovery)
ارسال خودکار پیامک یا ایمیل یادآوری به مشتریانی که سبد خرید خود را تکمیل نکردهاند. یکی از موثرترین تکنیکهای افزایش فروش.
Schedule (هر ساعت)
→ MySQL (خواندن سبدهای رها شده > 1 ساعت)
SELECT * FROM wp_woocommerce_sessions
WHERE session_expiry > NOW()
AND cart_contents != ''
→ Loop (هر سبد رها شده)
→ Code (استخراج اطلاعات مشتری و محصولات)
→ IF (شماره تلفن دارد)
→ HTTP Request (ارسال پیامک)
Text: "سلام! سبد خرید شما منتظر تکمیل است. برگردید و خرید کنید..."
Link: https://shop.com/cart
→ IF (ایمیل دارد)
→ Email Send (یادآوری سبد خرید)
→ Wait (24 ساعت)
→ IF (هنوز خرید نکرده)
→ WooCommerce (coupon-create)
code: "COMEBACK-{userId}"
discount_type: percent
amount: "10"
usage_limit: 1
date_expires: 3 روز بعد
→ پیامک/ایمیل (کد تخفیف ویژه)۴. فروش چندکاناله (Multi-channel Selling)
همگامسازی محصولات و موجودی بین WooCommerce و سایر کانالهای فروش (دیجیکالا، ترب، اینستاگرام).
WooCommerce Trigger (product.updated)
→ IF (تغییر قیمت یا موجودی)
→ HTTP Request (بهروزرسانی در API دیجیکالا)
PUT /api/products
Body: {sku, price_new, stock}
→ HTTP Request (بهروزرسانی در ترب)
→ Google Sheets (ثبت لاگ تغییرات)
→ IF (محصول جدید)
→ Telegram (ارسال محصول به کانال اینستاگرام)
→ HTTP Request (ایجاد در سایر پلتفرمها)۵. صدور خودکار فاکتور رسمی فارسی
پس از تکمیل سفارش، فاکتور رسمی فارسی تولید و به مشتری ایمیل شود.
WooCommerce Trigger (order.completed)
→ WooCommerce (order-get: اطلاعات کامل)
→ Code (تولید HTML فاکتور فارسی)
const order = $input.first().json;
// تبدیل تاریخ به شمسی
// فرمت اعداد فارسی
// ساخت جدول آیتمها
// محاسبه مالیات بر ارزش افزوده
→ HTTP Request (تبدیل HTML به PDF)
→ Email Send (ارسال فاکتور)
To: order.billing.email
Subject: "فاکتور سفارش #" + order.number
Attachment: invoice.pdf۶. سیستم امتیازدهی و وفاداری مشتریان
بر اساس خرید مشتری، امتیاز اختصاص داده شود و در خرید بعدی تخفیف بگیرد.
WooCommerce Trigger (order.completed)
→ Code (محاسبه امتیاز)
const points = Math.floor(order.total / 10000); // هر 10,000 تومان = 1 امتیاز
→ MySQL (بهروزرسانی امتیاز مشتری)
UPDATE wp_usermeta SET meta_value = meta_value + points
WHERE user_id = order.customer_id AND meta_key = 'loyalty_points'
→ IF (امتیاز > 100)
→ WooCommerce (coupon-create)
code: "LOYAL-{customer_id}"
discount_type: fixed_cart
amount: "50000"
usage_limit: 1
→ SMS/Telegram (اطلاعرسانی به مشتری)
Text: "تبریک! شما 100 امتیاز جمع کردید. کد تخفیف 50,000 تومانی..."۷. گزارش فروش روزانه و هفتگی
ارسال خودکار آمار فروش به مدیران در تلگرام و ذخیره در Google Sheets.
Schedule (هر شب ساعت ۲۳:۳۰)
→ WooCommerce (order-list)
status: completed,processing
after: امروز ۰۰:۰۰
→ Code (محاسبه آمار)
const orders = $input.all().map(i => i.json);
const totalSales = orders.reduce((s, o) => s + parseFloat(o.total), 0);
const avgOrder = totalSales / orders.length;
const topProducts = ...; // محصولات پرفروش
→ Telegram (sendMessage)
Text:
📊 گزارش فروش امروز:
تعداد سفارش: {count}
مجموع فروش: {totalSales} تومان
میانگین سفارش: {avgOrder} تومان
پرفروشترین: {topProduct}
→ Google Sheets (ذخیره آمار روزانه)۸. پردازش خودکار پرداخت و تغییر وضعیت سفارش
وقتی پرداخت از درگاه ایرانی تایید شود، وضعیت سفارش به صورت خودکار تغییر کند.
Webhook (callback درگاه زرینپال)
→ HTTP Request (verify payment)
POST https://api.zarinpal.com/pg/v4/payment/verify.json
→ IF (Status == 100: تایید شده)
→ WooCommerce (order-update)
status: processing
meta_data: [{key: "zarinpal_ref", value: RefID}]
→ Telegram (تایید پرداخت به ادمین)
→ ELSE
→ WooCommerce (order-update)
status: failed
→ Telegram (هشدار پرداخت ناموفق)۹. ارسال خودکار کد رهگیری مرسوله
وقتی بسته در سیستم لجستیک ثبت شد، کد رهگیری به مشتری ارسال شود.
Webhook (ثبت بارنامه از پست/تیپاکس)
→ WooCommerce (order-update)
orderId: order_id
status: completed
meta_data: [{key: "tracking_code", value: tracking}]
→ WooCommerce (order-get: اطلاعات مشتری)
→ HTTP Request (ارسال پیامک)
Text: "سفارش #{order_number} ارسال شد.
کد رهگیری: {tracking_code}
پیگیری: https://tracking.post.ir/?id={tracking_code}"
→ Telegram (اعلان ارسال به ادمین)۱۰. یکپارچهسازی با نرمافزار حسابداری
همگامسازی سفارشات و فاکتورها با نرمافزارهای حسابداری ایرانی (هلو، سپیدار، راهکاران).
WooCommerce Trigger (order.completed)
→ Code (تبدیل فرمت سفارش به فرمت حسابداری)
// تبدیل تاریخ میلادی به شمسی
// محاسبه مالیات بر ارزش افزوده (۹٪)
// تفکیک آیتمها بر اساس کد حسابداری
// استخراج اطلاعات مشتری
→ HTTP Request (ارسال به API نرمافزار حسابداری)
POST /api/invoices
Body: {customer, items, tax, date_shamsi}
→ MySQL (ذخیره mapping سفارش-فاکتور)
→ IF (خطا)
→ Telegram (هشدار خطای همگامسازی حسابداری)۱۱. مدیریت خودکار نظرات و امتیازات محصول
بررسی نظرات جدید، فیلتر اسپم و اعلان نظرات مثبت/منفی.
Schedule (هر ۳۰ دقیقه)
→ WooCommerce (review-list) status: hold
→ Loop (هر نظر)
→ Code (بررسی اسپم و محتوای نامناسب)
→ IF (امتیاز >= 4)
→ WooCommerce API (approve review)
→ Telegram (نظر مثبت جدید!)
→ IF (امتیاز <= 2)
→ Telegram (هشدار نظر منفی به تیم پشتیبانی)
→ Email (ارسال ایمیل عذرخواهی + کد تخفیف به مشتری)
→ IF (اسپم)
→ WooCommerce API (trash review)۱۲. ایجاد خودکار محصول از Google Sheets
مدیران محصولات را در اسپردشیت وارد کنند و به صورت خودکار در فروشگاه ایجاد شوند.
Google Sheets Trigger (ردیف جدید)
→ WooCommerce (product-create)
name: نام محصول
regular_price: قیمت
description: توضیحات
sku: کد محصول
categories: [{id: mapping[category_name]}]
images: [{src: image_url}]
manage_stock: true
stock_quantity: موجودی
status: publish
→ Google Sheets (بهروزرسانی ستون woo_product_id)
→ Telegram (محصول جدید اضافه شد)۱۳. سیستم هشدار قیمت رقبا
مانیتورینگ قیمت رقبا و بهروزرسانی خودکار قیمتها.
Schedule (هر ۶ ساعت)
→ WooCommerce (product-list: محصولات فعال)
→ Loop (هر محصول)
→ HTTP Request (scrape قیمت رقیب از ترب/دیجیکالا)
→ Code (مقایسه قیمت)
→ IF (قیمت ما > قیمت رقیب + 5%)
→ WooCommerce (product-update)
sale_price: قیمت رقابتی
→ Telegram (هشدار تغییر قیمت)
→ Google Sheets (ثبت لاگ مقایسه قیمت)نکات حرفهای
نکات حرفهای
۱. از WooCommerce Trigger (Webhook) بجای Polling استفاده کنید
Webhook بلافاصله پس از رویداد اجرا میشود در حالی که Polling (Schedule + API) تاخیر دارد و منابع بیشتری مصرف میکند. برای سفارش جدید، همیشه از Webhook استفاده کنید.
۲. Batch Operations برای عملیات انبوه
برای بهروزرسانی چندین محصول یا سفارش، از Batch API استفاده کنید تا بجای N درخواست جداگانه، همه را در یک درخواست ارسال کنید:
POST /wp-json/wc/v3/products/batch
Body: {
update: [
{id: 1, regular_price: "50000"},
{id: 2, regular_price: "75000"},
{id: 3, stock_quantity: 0}
]
}حداکثر ۱۰۰ آیتم در هر batch.
۳. استفاده از meta_data برای دادههای سفارشی
WooCommerce از meta_data برای ذخیره هر نوع اطلاعات اضافی پشتیبانی میکند. از آن برای ذخیره اطلاعات خاص فروشگاه ایرانی استفاده کنید:
meta_data: [
{key: "_billing_national_code", value: "0012345678"},
{key: "_billing_postal_code", value: "1234567890"},
{key: "_tracking_code", value: "123456789012"},
{key: "_payment_gateway_ref", value: "A00000000000000000000"},
{key: "_shamsi_date", value: "1403/05/15"}
]۴. وضعیتهای سفارش WooCommerce
درک صحیح وضعیتها برای اتوماسیون حیاتی است:
pending → در انتظار پرداخت (سفارش ثبت شده ولی پرداخت نشده)
processing → در حال پردازش (پرداخت شده، آماده ارسال)
on-hold → در انتظار (نیاز به بررسی دستی)
completed → تکمیل شده (ارسال شده و تحویل داده شده)
cancelled → لغو شده (توسط مشتری یا ادمین)
refunded → مسترد شده (وجه برگردانده شده)
failed → ناموفق (پرداخت ناموفق)
trash → زبالهدانسفارش معمولی: pending → processing → completed
۵. Pagination برای دریافت همه دادهها
WooCommerce حداکثر ۱۰۰ آیتم در هر صفحه برمیگرداند. Header پاسخ شامل اطلاعات صفحهبندی است:
X-WP-Total: 250 → تعداد کل آیتمها
X-WP-TotalPages: 3 → تعداد کل صفحاتبرای دریافت همه: حلقهای بنویسید که page را افزایش دهد تا X-WP-TotalPages.
۶. تنظیمات ویژه درگاههای پرداخت ایرانی
الگوی اتوماسیون WooCommerce + درگاههای ایرانی:
WooCommerce + ZarinPal:
→ سفارش جدید (status: pending)
→ پرداخت موفق → order-update (status: processing)
→ پرداخت ناموفق → order-update (status: failed)
→ ذخیره شماره تراکنش در meta_data
WooCommerce + IDPay:
→ مشابه ZarinPal با API متفاوت
→ callback URL: /wc-api/idpay_gateway
افزونههای محبوب درگاه:
→ WooCommerce ZarinPal Gateway
→ IDPay for WooCommerce
→ WooCommerce Mellat Bank Gateway
→ WooCommerce Saman Bank Gateway۷. ساختار صحیح محصول متغیر (Variable Product)
برای ایجاد محصول با تنوع (سایز، رنگ) سه مرحله لازم است:
مرحله ۱: ایجاد محصول Variable
WooCommerce (product-create)
type: variable
attributes: [{name: "رنگ", options: ["قرمز", "آبی", "سبز"], variation: true}]
مرحله ۲: ایجاد Variation برای هر گزینه
WooCommerce (product-variation-create)
productId: شناسه محصول والد
regular_price: "150000"
attributes: [{name: "رنگ", option: "قرمز"}]
stock_quantity: 10
مرحله ۳: تکرار برای سایر گزینهها
→ Loop → Variation Create۸. Rate Limit و بهینهسازی درخواستها
WooCommerce محدودیت rate limit پیشفرض ندارد، ولی سرور شما دارد:
نکات بهینهسازی:
→ بین درخواستها 300ms Wait اضافه کنید
→ از per_page: 100 بجای مقدار پیشفرض ۱۰ استفاده کنید
→ فقط فیلدهای مورد نیاز را درخواست کنید: ?_fields=id,name,price
→ از Batch API برای عملیات انبوه استفاده کنید
→ WP Object Cache (Redis) فعال کنید۹. Webhook Topics پرکاربرد و ترتیب رویدادها
order.created → ثبت سفارش جدید (اولین رویداد)
order.updated → هر تغییر در سفارش (وضعیت، آدرس و غیره)
order.deleted → حذف سفارش
order.restored → بازیابی سفارش از زبالهدان
product.created → محصول جدید از پیشخوان
product.updated → هر تغییر در محصول
product.deleted → حذف محصول
customer.created → ثبتنام مشتری جدید
customer.updated → تغییر اطلاعات مشتری
coupon.created → کوپن جدید ایجاد شد
coupon.updated → کوپن ویرایش شدترتیب سفارش معمولی: order.created → order.updated (pending) → order.updated (processing) → order.updated (completed)
۱۰. یکپارچهسازی با پلاگینهای فارسی محبوب
پیامک:
→ WP SMS, Melipayamak, Kavenegar
→ میتوانید از n8n بجای افزونه SMS استفاده کنید (ارزانتر)
حملونقل:
→ WooCommerce Post Pishtaz (پست پیشتاز)
→ Tipax Shipping
→ Peyk, SnapExpress (ارسال فوری)
→ n8n میتواند کد رهگیری را خودکار وارد کند
فاکتور:
→ Persian WooCommerce Invoice
→ n8n میتواند فاکتور PDF فارسی تولید کند
تقویم شمسی:
→ WP Jalali (Shamsi Calendar)
→ تاریخ سفارش در API به میلادی است، در n8n تبدیل کنید۱۱. فیلتر کردن سفارشات با پارامترهای پیشرفته
سفارشات امروز:
/orders?after=2024-01-15T00:00:00&status=processing
سفارشات یک مشتری خاص:
/orders?customer=123&per_page=100
سفارشات حاوی محصول خاص:
/orders?product=456
جستجو بر اساس شماره سفارش:
/orders?search=1234
مرتبسازی بر اساس تاریخ (جدیدترین):
/orders?orderby=date&order=desc۱۲. Error Handling حرفهای
همیشه Error Workflow داشته باشید:
WooCommerce Node → On Error:
→ Code (استخراج جزئیات خطا)
const error = $input.first().json;
const errorCode = error.data?.status || 'unknown';
const errorMsg = error.message || 'خطای ناشناخته';
→ IF (errorCode == 429 || errorCode >= 500)
→ Wait (5 ثانیه) → Retry
→ ELSE
→ MySQL (ذخیره لاگ خطا)
→ Telegram (هشدار به ادمین)
Text: "خطای WooCommerce API: {errorCode} - {errorMsg}"۱۳. تست API بدون n8n
برای عیبیابی، ابتدا API را مستقیماً تست کنید:
curl https://your-store.com/wp-json/wc/v3/orders \
-u ck_xxxxx:cs_xxxxx
curl https://your-store.com/wp-json/wc/v3/products \
-u ck_xxxxx:cs_xxxxx \
-H "Content-Type: application/json"اگر curl کار کرد ولی n8n نه، مشکل از تنظیمات credential n8n است.
۱۴. Multi-vendor Setup (فروشگاه چندفروشندهای)
برای فروشگاههای چندفروشندهای (Dokan, WCFM, WC Vendors):
WooCommerce Trigger (order.created)
→ Code (تفکیک آیتمها بر اساس فروشنده)
→ Loop (هر فروشنده)
→ Telegram (اعلان سفارش به فروشنده)
→ Email (جزئیات سفارش)
→ MySQL (ثبت کمیسیون)
→ Code (محاسبه کمیسیون فروشگاه)۱۵. استفاده از WooCommerce REST API v3
همیشه از آخرین نسخه API (v3) استفاده کنید:
Base URL: https://your-store.com/wp-json/wc/v3/
Endpoints:
/orders → سفارشات
/products → محصولات
/products/{id}/variations → تنوعها
/customers → مشتریان
/coupons → کوپنها
/shipping/zones → مناطق ارسال
/taxes → مالیات
/reports/sales → گزارش فروش
/products/categories → دستهبندیها
/products/tags → تگها
/products/reviews → نظرات۱۶. بهینهسازی عملکرد برای فروشگاههای بزرگ
اگر فروشگاه شما بیش از ۱۰۰۰ محصول یا ۵۰۰ سفارش روزانه دارد:
→ از Redis Object Cache استفاده کنید
→ WP-Cron را با سرور cron جایگزین کنید
→ REST API Caching فعال کنید
→ از _fields پارامتر برای محدود کردن فیلدها استفاده کنید
→ HPOS (High-Performance Order Storage) را فعال کنید
→ از CDN برای تصاویر محصول استفاده کنید
→ دیتابیس را بهینه و index کنیدرفع مشکلات
رفع مشکلات رایج
خطای 401 - Consumer Key/Secret نامعتبر
علت: کلیدهای API اشتباه یا نامعتبر هستند
راهحل
- مطمئن شوید Consumer Key با
ck_و Consumer Secret باcs_شروع میشود - کلیدها را از WooCommerce > تنظیمات > پیشرفته > REST API مجدداً بررسی کنید
- کلید جدید بسازید اگر Secret را گم کردهاید (فقط یکبار نمایش داده میشود)
- URL فروشگاه را بدون اسلش انتهایی و بدون /wp-json وارد کنید
- مطمئن شوید Permalinks روی Plain نباشد (Pretty Permalinks فعال باشد)
خطای 403 - دسترسی کافی نیست
علت: سطح دسترسی API Key پایینتر از عملیات درخواستی است
راهحل
- سطح دسترسی API Key را بررسی کنید (Read/Write/Read-Write)
- برای ایجاد و ویرایش، حتماً دسترسی Write لازم است
- کاربر مرتبط با API Key باید نقش Administrator داشته باشد
- بررسی کنید افزونه امنیتی (Wordfence, iThemes) REST API را بلاک نکرده باشد
- اگر از CDN مثل Cloudflare استفاده میکنید، IP سرور n8n را وایتلیست کنید
خطای 404 - Endpoint پیدا نشد
علت: REST API غیرفعال یا URL نادرست
راهحل
- Permalink Settings را به Post name یا Custom Structure تغییر دهید
- آدرس فروشگاه را بررسی کنید:
https://your-store.com(بدون /shop یا /wp-json) - REST API URL را تست کنید:
https://your-store.com/wp-json/wc/v3/ - افزونه WooCommerce نصب و فعال باشد
- فایل .htaccess دسترسی به wp-json را بلاک نکرده باشد
- اگر ۴۰۴ میگیرید، از پیشخوان وردپرس Permalinks را یکبار Save کنید
خطای 400 - پارامتر نامعتبر
علت: دادههای ارسالی فرمت صحیح ندارند
راهحل
regular_priceوsale_priceباید string باشند، نه number: "50000" نه 50000categoriesباید آرایه از object باشد: [{id: 15}] نه [15]imagesباید URL کامل و قابل دسترس داشته باشندstock_quantityباید عدد صحیح (integer) باشدskuنباید تکراری باشدstatusفقط مقادیر مجاز: draft, pending, private, publish- برای سفارش:
line_itemsباید حداقل یک آیتم داشته باشد
خطای 500 - Internal Server Error
علت: مشکل در سرور وردپرس
راهحل
- لاگ خطاهای PHP را بررسی کنید:
wp-content/debug.log WP_DEBUGرا در wp-config.php فعال کنید- حافظه PHP را افزایش دهید:
define('WP_MEMORY_LIMIT', '256M') - تداخل افزونهها را بررسی کنید (غیرفعال کردن یکبهیک)
- نسخه PHP سرور حداقل ۷.۴ باشد (۸.۱+ توصیه میشود)
Webhook Events دریافت نمیشوند
علت: تنظیمات Webhook نادرست یا مشکل شبکه
راهحل
- مطمئن شوید n8n از اینترنت قابل دسترس است (Public URL، نه localhost)
- SSL معتبر روی n8n فعال باشد (HTTPS)
- وضعیت Webhook در WooCommerce > تنظیمات > پیشرفته > Webhooks "فعال" باشد
- Delivery URL را بررسی کنید
- لاگ Webhook را ببینید: هر webhook تاریخچه ارسال دارد
- Webhook Secret را در n8n تنظیم کنید
- WooCommerce Action Scheduler فعال باشد (WP Cron باید کار کند)
- اگر از افزونه کش استفاده میکنید، REST API را از کش مستثنا کنید
مشکل محصولات متغیر (Variable Products)
علت: Attributes یا Variations نادرست تنظیم شده
راهحل
- ابتدا محصول را با
type: variableایجاد کنید - Attributes را با
variation: trueتعریف کنید - سپس Variations را جداگانه ایجاد کنید
- هر Variation باید
attributesبا مقدار دقیق option داشته باشد regular_priceبرای Variation اجباری است (نه محصول والد)- حداکثر تعداد Variations: بستگی به سرور دارد (معمولاً ۵۰-۱۰۰)
کندی API و Timeout
علت: حجم زیاد داده یا سرور ضعیف
راهحل
- از
per_pageبرای محدود کردن نتایج استفاده کنید - از pagination استفاده کنید (page=1, page=2, ...)
- بین درخواستها Wait node اضافه کنید (300-500ms)
- از فیلترهای date و status برای محدود کردن نتایج استفاده کنید
- Object Cache (Redis/Memcached) روی سرور وردپرس نصب کنید
max_execution_timePHP را افزایش دهید- از WooCommerce REST API Caching افزونه استفاده کنید
مشکل Encoding فارسی
علت: مشکل در UTF-8 یا JSON encoding
راهحل
- مطمئن شوید سرور از UTF-8 پشتیبانی میکند
- در header درخواست:
Content-Type: application/json; charset=utf-8 - از
JSON.stringify()برای ارسال دادههای فارسی استفاده کنید - Collation دیتابیس:
utf8mb4_unicode_ciباشد - در WordPress:
DB_CHARSETبایدutf8mb4باشد
