Skip to Content

چرا محصول به سبد خرید ووکامرس اضافه نمی‌شود؟ تشخیص Ajax، موجودی و JavaScript

اگر دکمه افزودن به سبد ووکامرس کار نمی‌کند، خطای JavaScript، پاسخ Ajax، نوع محصول، موجودی، session و cache را مرحله‌ای بررسی کنید.

نویسنده مدیر کل تاریخ انتشار
این پست را به اشتراک بگذارید

کار نکردن دکمه «افزودن به سبد» همیشه یک خطا نیست: گاهی محصول متغیر بدون انتخاب ویژگی است، گاهی درخواست Ajax با 403 یا 500 برمی‌گردد و گاهی کالا در backend اضافه شده اما شمارنده سبد به‌دلیل JavaScript یا cache به‌روز نمی‌شود. ابتدا رفتار واقعی را مشخص کنید تا چند کلیک، تعداد ناخواسته نسازد.

پاسخ سریع: با مرورگر ناشناس و DevTools باز، محصول ساده و موجود را امتحان کنید. Console و request افزودن به سبد را از نظر status و response بررسی و سپس صفحه سبد را مستقیم باز کنید. اگر کالا آنجاست مشکل نمایش است؛ اگر نیست، validation، موجودی، session، WAF و خطای PHP را دنبال کنید.

دامنه خطا را مشخص کنید

  • همه محصولات یا فقط یک محصول؟
  • محصول ساده، متغیر یا رزروی؟
  • فقط مهمان یا کاربر واردشده؟
  • صفحه آرشیو یا خود محصول؟
  • request ارسال می‌شود یا نه؟
  • سبد خالی است یا فقط badge تغییر نمی‌کند؟

یک محصول ساده آزمایشی با قیمت و موجودی معتبر baseline مناسبی است. تنظیم محصول واقعی را بدون backup تغییر ندهید.

محصول متغیر و Validation

برای محصول متغیر باید ترکیب ویژگی معتبر انتخاب و variation قابل خرید باشد. موجودی، قیمت، وضعیت انتشار و محدودیت تعداد را بررسی کنید. پیام validation ممکن است پایین صفحه یا در response Ajax باشد و قالب آن را پنهان کرده باشد.

DevTools چه می‌گوید؟

مشاهدهفرضیهاقدام بعدی
هیچ request نیستخطای JS یا handler قالباولین خطای Console
403nonce، WAF یا rule امنیتیrequest ID و log
500Fatal یا exception PHPPHP و WooCommerce log
200 با HTMLredirect، challenge یا cacheresponse و redirect chain
Success ولی UI ثابتfragment یا JavaScriptCart مستقیم و Console

method، status، مدت و response را ثبت کنید، اما cookie و token را منتشر نکنید.

JavaScript و بهینه‌سازی Asset

خطای یک script می‌تواند handlerهای بعدی را متوقف کند. ترکیب، delay یا defer فایل‌ها نیز ترتیب dependency را تغییر می‌دهد. روی staging گزینه‌های بهینه‌سازی را یکی‌یکی و با پاک‌سازی cache آزمایش کنید؛ خاموش‌کردن هم‌زمان همه ابزارها علت را نامشخص می‌کند.

Session، Cookie و دامنه

سبد مهمان به cookie و session وابسته است. تفاوت دامنه با/بدون www، تغییر HTTP/HTTPS، SameSite یا proxy نادرست می‌تواند session تازه بسازد. metadata کوکی را بررسی کنید ولی مقدار آن را به اشتراک نگذارید. redirect به hostname دیگر یک نشانه مهم است.

Cache و CDN

endpoint افزودن به سبد و پاسخ شخصی نباید عمومی cache شود. ruleهای CDN، reverse proxy و افزونه را جدا بررسی کنید. cache اشتباه ممکن است سبد کاربر دیگری را نمایش دهد و مسئله حریم خصوصی بسازد. headerها را ثبت و فقط مسیر مرتبط را purge کنید.

WAF را کامل خاموش نکنید

اگر درخواست block شده، شناسه rule و false positive را مشخص و استثنای حداقلی بسازید. خاموشی کامل WAF یا کنترل CSRF راه‌حل پایدار نیست. پس از تغییر، ورودی نامعتبر و rate limit را نیز آزمایش کنید.

بررسی سمت سرور

WooCommerce Status log، PHP error log و access log را در همان timestamp ببینید. نمایش خطا برای بازدیدکنندگان را فعال نکنید. stack trace باید افزونه یا hook مالک را مشخص کند. اگر request کند یا timeout است، تشخیص کندی ووکامرس را اجرا کنید.

تداخل را امن پیدا کنید

  1. backup و staging هم‌نسخه بسازید.
  2. سناریوی ثابت و نتیجه مورد انتظار ثبت کنید.
  3. با قالب سازگار و افزونه‌های ضروری baseline بگیرید.
  4. گروه‌های کوچک افزونه را اضافه کنید.
  5. گروه معیوب را عضو‌به‌عضو بررسی کنید.
  6. Cart، Checkout و موجودی را smoke test کنید.

درگاه، ارسال یا افزونه موجودی production را بدون maintenance plan غیرفعال نکنید.

وقتی مشکل فقط در صفحه آرشیو است

افزودن Ajax در صفحه فروشگاه و دسته ممکن است با صفحه محصول مسیر متفاوتی داشته باشد. template سفارشی، quick view یا دکمه‌ای که شناسه variation را نمی‌فرستد از نامزدهای اصلی‌اند. markup دکمه سالم و معیوب، data attributeها و response را مقایسه کنید؛ کپی‌کردن HTML دکمه استاندارد بدون hookهای لازم الزاماً درست نیست.

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

در فروش پرترافیک ممکن است موجودی بین نمایش صفحه و کلیک کاربر تغییر کند. پاسخ «قابل خرید نیست» را پنهان نکنید و برای دور زدن validation موجودی را اجباری تغییر ندهید. اگر سیستم ERP موجودی را sync می‌کند، timestamp، retry و ترتیب updateها را بررسی کنید. موفقیت ظاهری افزودن کالای ناموجود در Checkout به خطای دیرهنگام تبدیل می‌شود.

پیشگیری و مانیتورینگ

پس از هر release یک تست خودکار یا دستی برای محصول ساده و متغیر، مهمان و عضو داشته باشید. نرخ خطای endpoint افزودن، خطاهای JavaScript و 403/500 را مانیتور کنید. تغییرات CDN و optimization باید در همان changelog ثبت شوند تا زمان شروع regression قابل تشخیص باشد.

اشتباه‌های رایج

  • کلیک چندباره و ایجاد تعداد ناخواسته
  • cache کردن Ajax یا session
  • نادیده گرفتن variation
  • خاموش کردن WAF و TLS
  • تست فقط با session قدیمی
  • ویرایش مستقیم داده محصول در دیتابیس

تأیید اصلاح

محصول ساده و متغیر، مهمان و عضو، صفحه محصول و آرشیو را آزمایش کنید. تعداد، موجودی، mini-cart، Cart و انتقال به Checkout باید صحیح باشد. request تکراری و دوبارکلیک نیز نباید نتیجه غیرمنتظره بسازد.

چه زمانی کمک تخصصی لازم است؟

اگر کالا در backend اضافه می‌شود اما UI نادرست است یا خطا فقط زیر CDN رخ می‌دهد، آزمون production خطر دارد. پشتیبانی فروشگاه ووکامرس می‌تواند request، session، cache و JavaScript را در یک trace بررسی کند.

پرسش‌های متداول

چرا فقط محصولات متغیر اضافه نمی‌شوند؟

variation، ویژگی اجباری، قیمت و موجودی ترکیب را بررسی کنید.

چرا کالا اضافه می‌شود ولی آیکن تغییر نمی‌کند؟

احتمالاً cart fragment یا JavaScript قالب مشکل دارد؛ Cart مستقیم را باز کنید.

آیا بازسازی permalink کمک می‌کند؟

فقط اگر endpoint واقعاً 404 است؛ برای validation یا JS اثری ندارد.

چرا Checkout ووکامرس هنگام ثبت سفارش گیر می‌کند؟ راهنمای تشخیص بدون سفارش تکراری
اگر Checkout ووکامرس روی spinner می‌ماند، قبل از پرداخت مجدد وضعیت سفارش، Ajax، خطای PHP و پاسخ درگاه را بررسی و از سفارش تکراری جلوگیری کنید.