FA-TOOLS — Header Component

چگونه تداخل افزونه‌ها در وردپرس را پیدا و رفع کنیم؟

خلاصه کاربردی این آموزش:

تداخل افزونه‌ها در وردپرس زمانی رخ می‌دهد که دو کد، اسکریپت یا استایل با یکدیگر ناهمخوان باشند و باعث خرابی پیشخوان یا ظاهر سایت شوند. در این مقاله، روش‌های استاندارد و بدون قطعی سایت (از جمله حالت عیب‌یابی بدون اثر روی کاربران، تکنیک جستجوی باینری و بررسی لاگ‌ها) را برای شناسایی دقیق افزونه مخرب و رفع خطاهای ناشی از آن آموزش می‌دهیم تا سایت شما بدون نیاز به کدنویسی پیچیده دوباره به حالت عادی برگردد.

تداخل افزونه‌ها یکی از شایع‌ترین دلایل بروز خطاهای فنی، سفید شدن صفحه (WSoD)، از کار افتادن دکمه‌ها و افت سرعت در وردپرس است. این مشکل زمانی اتفاق می‌افتد که دو افزونه یا یک افزونه و قالب، سعی کنند از تابع PHP، کتابخانه جاوا اسکریپت یا کلاس CSS یکسانی با نسخه‌های متفاوت استفاده کنند.

تداخل افزونه در وردپرس چیست و چرا رخ می‌دهد؟

رفع تداخل افزونه‌ها در وردپرس چگونه پیدا کنیم — تصویر 2
پاسخ کوتاه: تداخل افزونه زمانی رخ می‌دهد که دو بخش از کد وردپرس برای دریافت منابع یکسان سیستم رقابت کنند، نام توابع مشترک داشته باشند یا اسکریپت‌های جاوا اسکریپت ناسازگار را بارگذاری کنند. این ناهماهنگی مانع از اجرای صحیح کدهای وردپرس می‌شود.

وردپرس یک اکوسیستم باز است که در آن افزونه‌های مختلف توسط توسعه‌دهندگان متفاوت با استانداردهای گوناگون نوشته می‌شوند. دلایل اصلی تداخل عبارتند از:

  • تداخل توابع PHP (Function Name Collision): وقتی دو افزونه از یک نام تابع یکسان بدون چک کردن وجود آن استفاده می‌کنند.
  • تداخل نسخه‌های jQuery و JavaScript: بارگذاری همزمان چند نسخه مختلف از کتابخانه‌های جاوا اسکریپت که باعث شکست عملکرد عناصر تعاملی می‌شود.
  • بازنویسی استایل‌های CSS: زمانی که استایل یک افزونه روی عناصر افزونه دیگر یا قالب تاثیر می‌گذارد. اگر به دنبال رفع این مشکلات هستید، استفاده از تکه‌کدهای کاربردی وردپرس می‌تواند به مدیریت بهتر کدهای سایت کمک کند.
  • عدم سازگاری با نسخه PHP: به‌روز نبودن کدهای یک افزونه با نسخه PHP فعال روی سرور.

نشانه های اصلی تداخل افزونه‌ها

رفع تداخل افزونه‌ها در وردپرس چگونه پیدا کنیم — تصویر 3

تداخل افزونه همیشه به شکل یک خطای بزرگ ظاهر نمی‌شود؛ گاهی اوقات اثرات آن به‌صورت پنهان عملکرد سایت را اختلال می‌بخشد. مهم‌ترین نشانه‌ها عبارتند از:

  • صفحه سفید مرگ (White Screen of Death) یا نمایش خطای Critical Error.
  • از کار افتادن ویرایشگر بلوک (گوتنبرگ) یا صفحه سازهایی مثل المنتور.
  • عدم کارکرد درست دکمه‌های آژاکسی (مثل دکمه افزودن به سبد خرید در ووکامرس).
  • وجود خطاهای قرمز رنگ در Console مرورگر که مرتبط با کدهای جاوا اسکریپت است.
  • بهم‌ریختگی چیدمان و ظاهر بخش‌هایی از سایت.

۴ روش عملی و گام‌به‌گام برای عیب‌یابی و یافتن تداخل

رفع تداخل افزونه‌ها در وردپرس چگونه پیدا کنیم — تصویر 4

برای پیدا کردن افزونه مشکل‌ساز می‌توانید از روش‌های زیر استفاده کنید. پیشنهاد می‌شود روش‌ها را به ترتیب انجام دهید.

روش اول: استفاده از افزونه Health Check & Troubleshooting (بدون قطعی برای کاربران)

بهترین و ایمن‌ترین روش برای سایت‌های فعال، استفاده از حالت عیب‌یابی افزونه رسمی سلامت سایت وردپرس است. این روش فقط برای شما (کاربر لاگین شده) افزونه‌ها را غیرفعال می‌کند و کاربران عادی سایت را بدون تغییر می‌بینند.

  1. افزونه Health Check & Troubleshooting را از مخزن وردپرس نصب و فعال کنید.
  2. به مسیر ابزارها > سلامت سایت بروید و وارد تب Troubleshooting (عیب‌یابی) شوید.
  3. روی دکمه Enable Troubleshooting Mode کلیک کنید. حالا تمامی افزونه‌ها برای شما غیرفعال شده و قالب به قالب پیش‌فرض تغییر می‌کند.
  4. از منوی بالای پیشخوان، افزونه‌ها را یکی‌یکی فعال کنید و مشکل سایت را تست کنید تا افزونه متداخل پیدا شود.
  5. پس از اتمام کار، حالت عیب‌یابی را غیرفعال کنید.

روش دوم: روش جستجوی باینری (تست نصف به نصف)

اگر دسترسی به پیشخوان دارید اما نمی‌خواهید از افزونه جانبی استفاده کنید، این روش سریع‌ترین راه دستی است:

  1. از تمام افزونه‌ها و دیتابیس خود نسخه پشتیبان (Backup) بگیرید.
  2. نیمی از افزونه‌های فعال را غیرفعال کنید.
  3. سایت را بررسی کنید. اگر مشکل برطرف شد، افزونه مخرب در نیمه غیرفعال‌شده قرار دارد. اگر مشکل باقی بود، در نیمه فعال است.
  4. این فرایند نصف کردن را روی گروه دارای مشکل ادامه دهید تا در چند گام کوتاه به دقیقاً یک افزونه برسید.

روش سوم: فعال‌سازی دیباگ وردپرس (WP_DEBUG)

اگر سایت شما با خطای ۵۰۰ یا صفحه سفید مواجه شده و به پیشخوان دسترسی ندارید، باید حالت دیباگ را از طریق هاست (File Manager) فعال کنید تا کد و مسیر دقیق خطا روی صفحه یا در فایل لاگ ذخیره شود.

  1. وارد هاست خود شوید و فایل wp-config.php را ویرایش کنید.
  2. خط define('WP_DEBUG', false); را پیدا کرده و آن را به شکل زیر تغییر دهید:
define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );

حالا خطای دقیق در فایلی به نام debug.log در پوشه wp-content ذخیره می‌شود. با باز کردن این فایل، مسیر دقیق افزونه‌ای که باعث ایجاد Fatal Error شده است را خواهید دید.

روش چهارم: تغییر نام پوشه افزونه‌ها از طریق FTP یا cPanel

وقتی قفل شده‌اید و هیچ دسترسی به مدیریت ندارید، کافیست به مسیر wp-content در هاست رفته و نام پوشه plugins را به plugins-old تغییر دهید. با این کار تمام افزونه‌ها یکباره غیرفعال می‌شوند و دسترسی شما به پیشخوان بازمی‌گردد.

مقایسه ابزارهای عیب‌یابی تداخل

ابزار / روش بهترین کاربرد
Health Check Plugin سایت‌های زنده و پرترافیک (بدون ایجاد قطعی برای بازدیدکنندگان)
WP_DEBUG Log شناسایی خطاهای سفید (WSoD) و Fatal Errorهای سخت‌افزاری/سروری
Query Monitor شناسایی افزونه‌های کندکننده، تداخل اسکریپت‌ها و کوئری‌های سنگین دیتابیس
کنسول مرورگر (F12) بررسی عدم کارکرد دکمه‌ها، فرم‌ها و خطاهای جاوا اسکریپت در سمت کاربر

راهکارهای دائمی برای رفع و جلوگیری از تداخل

پس از یافتن افزونه متداخل، می‌توانید یکی از اقدامات زیر را برای حل مشکل انجام دهید:

  • جایگزینی افزونه: استانداردترین راه، یافتن یک افزونه جایگزین و بهینه‌تر از مخزن رسمی وردپرس است.
  • غیرفعال‌سازی اسکریپت‌های مزاحم: اگر دو افزونه فایل JS مشابهی را بارگذاری می‌کنند، می‌توانید با استفاده از تابع wp_dequeue_script یکی از آن‌ها را از مدار خارج کنید. برای مشاهده نمونه این کدهامی‌توانید به بخش مجموعه تکه‌کدهای برنامه‌نویسی مراجعه کنید.
  • رفع تداخل استایل‌ها: اگر کلاسی از یک افزونه ظاهر بخش دیگری را خراب کرده است، می‌توانید با اعمال استایل‌های سفارشی CSS در بخش ویرایشگر استایل، اولویت کلاس‌ها را اصلاح کنید.
  • ارسال گزارش به توسعه‌دهنده: مشخصات خطا و نام دو افزونه متداخل را برای سازنده افزونه ارسال کنید تا در آپدیت بعدی آن را اصلاح کند.

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

۱. آیا پاک کردن افزونه متداخل باعث پاک شدن اطلاعات آن می‌شود؟

در اکثر موارد خیر؛ تنظیمات افزونه‌ها در دیتابیس باقی می‌مانند، اما صرفاً غیرفعال کردن افزونه هیچ داده‌ای را حذف نمی‌کند و روشی کاملاً safe است.

۲. چطور بفهمیم تداخل از طرف قالب است یا افزونه؟

کافیست موقتاً قالب سایت را روی یکی از قالب‌های پیش‌فرض وردپرس (مثل Twenty Twenty-Three) قرار دهید. اگر مشکل حل شد، تداخل میان قالب و افزونه است.

۳. اگر بعد از آپدیت PHP سایت خراب شد چه کنیم؟

این نشان می‌دهد یکی از افزونه‌های شما قدیمی است و با نسخه جدید PHP سازگار نیست. نسخه PHP را از هاست موقتاً پایین بیاورید، همه افزونه‌ها را آپدیت کرده و دوباره PHP را ارتقا دهید.

۴. آیا تعداد زیاد افزونه حتماً باعث تداخل می‌شود؟

تعداد افزونه‌ها به خودی خود عامل تداخل نیست؛ بلکه کیفیت کدنویسی و عدم رعایت استانداردهای وردپرس توسط سازندگان آن‌ها علت اصلی است.

عیب‌یابی سریع مشکلات رایج

مشکل: صفحه سفید (WSoD) بعد از نصب یک افزونه جدید

راه‌حل عملی: از طریق File Manager هاست به پوشه wp-content/plugins بروید و نام پوشه همان افزونه جدید را تغییر دهید یا آن را حذف کنید. سایت بلافاصله بالا خواهد آمد.

مشکل: کار نكردن دکمه‌های آژاکس یا اسلایدرها پس از نصب افزونه راکت یا بهینه‌ساز

راه‌حل عملی: تداخل معمولاً ناشی از ادغام (Combine) یا تاخیر در اجرای فایل‌های JS است. در تنظیمات افزونه راکت، گزینه “Combine JavaScript files” یا “Delay JavaScript execution” را موقتاً غیرفعال کنید.

مشکل: خطای Uncaught TypeError در کنسول مرورگر

راه‌حل عملی: آدرس فایلی که در انتهای خطای کنسول نوشته شده را نگاه کنید. نام پوشه موجود در آدرس، دقیقاً همان افزونه‌ای است که اسکریپت متداخل را فراخوانی کرده است.

سوالات متداول

تداخل افزونه در وردپرس چیست و چه موقع رخ می‌دهد؟

تداخل افزونه زمانی رخ می‌دهد که کدهای دو افزونه یا قالب برای منابع یکسان سرور رقابت کرده یا ناهمخوان باشند. این موضوع باعث کندی، اختلال در عملکرد یا ایجاد خطای صفحه سفید می‌شود.

چگونه بدون قطعی سایت تداخل افزونه‌ها را پیدا کنیم؟

با نصب افزونه رسمی Health Check & Troubleshooting و فعال‌سازی حالت عیب‌یابی، افزونه‌ها فقط برای شما غیرفعال می‌شوند و بازدیدکنندگان عادی بدون هیچ مشکلی سایت را مشاهده می‌کنند.

در صورت عدم دسترسی به پیشخوان وردپرس، چگونه افزونه‌ها را غیرفعال کنیم؟

کافیست وارد هاست خود شده و در مسیر wp-content، نام پوشه plugins را به نام دیگری تغییر دهید تا تمامی افزونه‌ها یکباره غیرفعال شده و دسترسی به مدیریت بازگردد.

فایل لاگ دیباگ وردپرس (debug.log) در کجا ذخیره می‌شود؟

پس از فعال‌سازی کدهای WP_DEBUG در فایل wp-config.php، تمام خطاهای فنی سایت در فایلی به نام debug.log داخل پوشه wp-content ذخیره می‌شوند.

Table of Contents

آخرین نوشته‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *