Skip to Content

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

با staging، قالب پیش‌فرض، لاگ PHP و مقایسه assetها مشخص کنید خرابی وردپرس واقعاً از تداخل قالب و افزونه است یا cache و سفارشی‌سازی.

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

وقتی فرم، منو، صفحه محصول یا ویرایشگر فقط با یک قالب خاص خراب می‌شود، ممکن است قالب و افزونه روی یک hook، template override یا کتابخانه JavaScript مشترک اثر بگذارند. بااین‌حال تغییر ظاهر به‌تنهایی اثبات تداخل نیست؛ cache قدیمی، child theme، کد snippets و تنظیمات بهینه‌ساز نیز می‌توانند همان نشانه را بسازند.

پاسخ سریع: مشکل را به مراحل دقیق و تکرارپذیر تبدیل کنید، clone نزدیک به production بسازید، قالب را موقتاً به یک قالب پیش‌فرض سالم تغییر دهید و همان سناریو را بدون تغییر دیگر تکرار کنید. اگر خطا رفع شد، هنوز باید میان parent theme، child theme، override و assetها تفکیک انجام شود.

نشانه‌های محتمل تداخل

  • block یا shortcode با قالب پیش‌فرض کار می‌کند اما با قالب فعال نه.
  • Console به فایل قالب و افزونه در یک زنجیره خطا اشاره می‌کند.
  • قالب، template قدیمی ووکامرس را override کرده است.
  • دو مؤلفه نسخه متفاوت یک کتابخانه را بارگذاری می‌کنند.
  • PHP trace از تابع قالب وارد hook افزونه می‌شود و داده نامعتبر می‌گیرد.

کندی صفحه الزاماً تداخل نیست؛ ممکن است مجموع queryها یا درخواست‌های خارجی زیاد باشد. آن مسئله به waterfall و profiler نیاز دارد.

یک سناریوی ثابت تعریف کنید

URL، نقش کاربر، اندازه نمایشگر، داده ورودی، نتیجه مورد انتظار و نتیجه واقعی را ثبت کنید. برای checkout، محصول، حمل و روش پرداخت آزمایشی ثابت بمانند. زمان خطا و اولین پیام Console یا PHP نیز نگه داشته شود. اگر بین تست‌ها چند متغیر عوض شود، نتیجه قابل استناد نیست.

چرا staging ضروری است؟

تعویض قالب روی production می‌تواند منو، header، tracking، صفحه محصول و پرداخت را برای همه کاربران تغییر دهد. staging باید نسخه PHP، وردپرس، افزونه‌ها، قالب و تنظیمات مشابه داشته باشد، اما ارسال ایمیل، پیامک، webhook و پرداخت واقعی در آن مهار شود. داده مشتری نیز باید محدود و محافظت شود.

آزمون مرحله‌ای و قابل بازگشت

  1. از فایل و دیتابیس backup قابل بازیابی بگیرید.
  2. نسخه parent theme، child theme و افزونه مرتبط را ثبت کنید.
  3. Console، Network و PHP log سناریوی خراب را ذخیره کنید.
  4. یک قالب پیش‌فرض سازگار را در staging فعال کنید.
  5. همان درخواست را با همان داده تکرار کنید.
  6. اگر مشکل رفع شد، child theme و سفارشی‌سازی‌ها را مرحله‌ای برگردانید.

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

اگر خطا در مرورگر است

در DevTools نخستین خطای Console و درخواست‌های 404/500 را ببینید. ترتیب scriptها، dependencyها و duplicate شدن کتابخانه‌ها مهم است. minify یا combine را فقط در staging و موقتاً کنار بگذارید. اگر مشکل رفع شد، ترتیب bundle و cache deployment را اصلاح کنید؛ خاموش کردن دائمی بهینه‌سازی راه‌حل نیست.

اگر خطا از PHP یا template است

قالب‌ها، به‌ویژه برای ووکامرس، ممکن است فایل افزونه را override کنند. گزارش WooCommerce Status فایل‌های قدیمی را نشان می‌دهد، اما این برچسب به‌تنهایی مقصر را ثابت نمی‌کند. فایل override را با نسخه فعلی افزونه diff کنید و trace همان درخواست را کنار آن بگذارید.

wp theme list
wp plugin list --status=active

این دستورها فقط inventory را می‌خوانند. حذف یا فعال‌سازی مؤلفه باید با backup و در محیط کنترل‌شده انجام شود.

راه‌حل پایدار چیست؟

بسته به شاهد، راه‌حل می‌تواند ارتقای قالب یا افزونه، حذف override منسوخ، انتقال سفارشی‌سازی به child theme، اصلاح enqueue یا جایگزینی مؤلفه بدون نگهداری باشد. ویرایش مستقیم parent theme یا vendor در آپدیت بعدی از بین می‌رود؛ patch باید نسخه‌بندی و آزمایش شود.

تفاوت تداخل CSS با خرابی منطقی

اگر عنصر وجود دارد اما پنهان، جابه‌جا یا بدون style است، computed style و selector برنده را بررسی کنید. استفاده فوری از !important ممکن است نشانه را بپوشاند و responsive state دیگری را خراب کند. اگر دکمه کلیک می‌شود ولی درخواست ساخته نمی‌شود، event handler و خطای JavaScript مهم‌تر است. اگر درخواست ارسال و پاسخ 500 می‌گیرد، بررسی را به PHP و endpoint منتقل کنید.

این تفکیک جلوی تغییر بی‌دلیل قالب را می‌گیرد. یک مشکل می‌تواند هم‌زمان دو لایه داشته باشد، اما باید نتیجه هر لایه با شاهد مستقل ثبت شود.

آزمون پذیرش بعد از اصلاح

تنها صفحه‌ای را که گزارش شده بررسی نکنید. header و منو، ورود، جست‌وجو، فرم‌ها، صفحه محصول، سبد و checkout را متناسب با سایت آزمایش کنید. Console باید خطای تازه نداشته باشد و درخواست‌های اصلی status مورد انتظار بگیرند. تست را روی موبایل واقعی یا viewportهای اصلی تکرار و cache CDN را پس از deploy هدفمند invalidate کنید.

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

  • تغییر هم‌زمان قالب و چند افزونه.
  • پاک نکردن cache مرتبط میان دو آزمون.
  • نادیده گرفتن child theme و snippets.
  • نتیجه‌گیری از صفحه اصلی درحالی‌که خطا فقط در checkout رخ می‌دهد.
  • نمایش عمومی خطاهای PHP یا استفاده از permission برابر 777.

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

اگر خطا فقط برای نقش خاص، AJAX، checkout یا زیر بار رخ می‌دهد، تعویض ساده قالب کافی نیست. در سرویس رفع مشکل فنی وردپرس می‌توان template، hook، asset و PHP trace را کنار هم بررسی کرد. اگر چند افزونه درگیرند، روش تشخیص تداخل افزونه‌ها دامنه آزمون را کوچک می‌کند.

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

آیا تعویض قالب تنظیمات قبلی را پاک می‌کند؟

معمولاً داده باقی می‌ماند، اما widget و محل منو ممکن است تغییر کند؛ به همین دلیل staging و backup لازم‌اند.

چرا مشکل فقط روی موبایل است؟

breakpoint، script شرطی، lazy loading یا cache موبایل را بررسی کنید. تست دسکتاپ جای سناریوی موبایل را نمی‌گیرد.

آیا outdated template ووکامرس اثبات خطاست؟

خیر. تغییرات فایل و رفتار خراب باید با نسخه فعلی مقایسه شوند.

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