دموی رایگان

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

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

W3Techs می‌گوید حدود ۴۳ درصد از وب‌سایت‌های دنیا با وردپرس ساخته شده‌اند (تاریخ گردآوری: آبان ۱۴۰۵)؛ این مقیاس یعنی اکوسیستم افزونه‌های آن هم پهناور است و احتمال هم‌پوشانی دو افزونه، جزئیات عادیِ این اکوسیستم است، نه اتفاق نادر. شکل شدید این هم‌پوشانی، صفحهٔ سفید است که در تشخیص صفحهٔ سفید وردپرس جدا آموزش داده شده؛ این‌جا همهٔ شکل‌های تداخل را — از خطای مرگبار تا خرابی ساکت — با یک روش واحد تشخیص می‌دهیم.

رویکرد ما تجربه‌محور است، نه حدس‌محور: به‌جای غیرفعال‌کردن افزونه‌ها یکی‌یکی و امید به شانس، با نصف‌کردن فهرست در هر مرحله، تعداد حالت‌های آزمایش را به لگاریتم می‌رسانیم. فهرست مقاله‌های افزونه و قالب را در هاب افزونه‌ها و قالب‌ها مرتب نگه داشته‌ایم؛ این آموزش نقطهٔ ورود عملی برای روزی است که سایت رفتار عادی ندارد.

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

تداخل افزونه‌ها چهار شکل رایج دارد. شکل اول، خطای واضح است: پیام خطای مرگبار، صفحهٔ سفید یا کد ۵۰۰. شکل دوم، خرابی ساکت است: فرم تماس دیگر ایمیل نمی‌فرستد، دکمهٔ خرید کار نمی‌کند یا آپلود عکس گیر می‌کند، بدون هیچ پیامی. شکل سوم، تداخل ظاهری است: استایل‌ها به‌هم می‌ریزند یا فونت‌ها عوض می‌شوند. شکل چهارم، کندی ناگهانی است که بعد از نصب یک افزونهٔ تازه شروع شده است.

دو الگوی تداخل هم دو نوع متهم می‌سازند: جفت افزونه-افزونه که معمولاً دو ابزار را برای یک کار می‌خواهد — دو افزونهٔ سئو، دو بهینه‌ساز تصویر، دو افزونهٔ امنیتی — و جفت افزونه-قالب که در آن اسکریپت یا استایل افزونه با سیستم قالب برخورد می‌کند. تفکیک این دو الگو از همین ابتدا مهم است، چون مسیر آزمون را تعیین می‌کند؛ در الگوی دوم، غیرفعال‌کردن افزونه‌ها ممکن است هرگز به جواب نرسد.

یک نکتهٔ تشخیصی هم بگذارید: زمان شروع مشکل، قوی‌ترین سرنخ شماست. اگر خرابی دقیقاً بعد از نصب یا به‌روزرسانی یک مورد شروع شده، همان مورد و هم‌سایه‌هایش را اول بگذارید؛ اگر بدون تغییر مشخصی شروع شده، احتمال تداخل کم و احتمال مشکل منابع یا سرور بیشتر است. این تمایز ساده، از ساعات جستجوی بی‌هدف جلوگیری می‌کند.

پیش از هر آزمایش؛ سه اقدام ایمن‌سازی

اقدام اول، بکاپ کامل است: هم فایل‌ها هم دیتابیس، قبل از هر دست‌کاری. تداخل را با غیرفعال‌سازی درمان می‌کنیم و غیرفعال‌سازی، تنظیمات و داده‌های وابسته را جابه‌جا می‌کند؛ بکاپ یعنی راه برگشت مکتوب. صفحهٔ صفحهٔ امنیت و پشتیبان‌گیری سوئیت چارچوب پشتیبان‌گیری منظم را پوشش می‌دهد؛ برای همین کارزار یک‌باره هم بکاپِ همان روز شرط شروع است، نه گزینهٔ اختیاری.

اقدام دوم، محیط آزمایشی است: اگر هاست‌تان نسخهٔ آزمایشی (Staging) می‌دهد، آزمایش را آن‌جا انجام دهید و بعد منتقل کنید؛ اگر نمی‌دهد، آزمایش را در ساعات کم‌بازدید و پشت سر هم اجرا کنید تا پنجرهٔ خرابی کوتاه بماند. اقدام سوم، ثبت وضعیت فعلی است: فهرست افزونه‌های فعال با شمارهٔ نسخه، نسخهٔ قالب و نسخهٔ PHP — یک اسکرین‌شات از صفحهٔ افزونه‌ها کافی است. بدون این عکس، بعد از غیرفعال‌سازی‌های پراکنده، حالت «قبل» را از یاد می‌برید و مقایسه از دست می‌رود.

ترتیب این سه اقدام هم عوض نکنید: بکاپ، محیط آزمایش، ثبت وضعیت. پریدن سراغ تشخیص قبل از این سه، به‌ تجربهٔ ما همان‌جایی است که یک مشکل کوچک قابل برگشت به دو مشکل تبدیل می‌شود؛ ده دقیقه ایمن‌سازی، در برابر یک ساعت رفع خرابی دوباره‌کاری، ارزان‌ترین سرمایه‌گذاری کل این آموزش است.

روش دودویی؛ غیرفعال‌سازی نیم‌به‌نیم

روش دودویی در چهار مرحله
هدف موقعیت‌یابی است نه تعطیلی سایت؛ افزونه‌های فروش و درگاه را مدت کم خاموش کنید.

روش دودویی یعنی نصف‌کردن فهرست متهمان در هر مرحله. اگر دوازده افزونهٔ فعال دارید، شش تای نیمهٔ اول را یک‌جا غیرفعال کنید و سایت را آزمایش کنید: اگر مشکل رفت، متهم در همان شش تاست؛ اگر ماند، در شش تای دیگر. حالا فهرست متهمِ مشخص‌شده را دوباره نصف کنید — سه‌تا غیرفعال، آزمایش؛ بعد یکی‌دو تا — تا در سه تا چهار مرحله به یک یا دو افزونهٔ متهم برسید. از دوازده حالتِ آزمایش تک‌به‌تک، به سه تا چهار آزمایش می‌رسید.

سه نکتهٔ اجرایی مسیر را تمیز نگه می‌دارد. اول، بعد از هر مرحله حتماً فعال‌سازی را به حالت قبلی برگردانید و نتیجه را یادداشت کنید؛ برگهٔ ثبت — کدام گروه غیرفعال شد، مشکل ماند یا رفت — همان چیزی است که جلسهٔ بعد را نجات می‌دهد. دوم، افزونه‌های حیاتی مثل فروشگاه و درگاه را در گروه‌بندی جدا نگه دارید و مدت خاموشی‌شان را کوتاه کنید. سوم، یک‌جا بیش از نیم فهرست را غیرفعال نکنید؛ هدف موقعیت‌یابی است، نه تعطیلی سایت.

خواندن شواهد؛ لاگ خطا و کنسول مرورگر

غیرفعال‌سازی حدس را کم می‌کند اما شواهد، متهم را نام می‌برند. اگر دسترسی فایل دارید، حالت اشکال‌زدایی وردپرس را روشن کنید: WP_DEBUG و WP_DEBUG_LOG را در wp-config فعال کنید تا خطاها در فایل debug.log بنشینند؛ مسیر فایلی که در خطا آمده معمولاً نام افزونهٔ مقصر را داخلش دارد. برای خطاهای سمت مرورگر، کنسول توسعه‌دهنده را باز کنید و دوباره همان کار خراب را انجام دهید؛ خطاهای جاوااسکریپت با نام فایل و خط، منبع‌شان را لو می‌دهند.

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

وقتی مقصر قالب است؛ آزمون قالب پیش‌فرض

آزمون قالب ساده است: قالب را موقتاً به یکی از قالب‌های پیش‌فرض وردپرس برگردانید و همان قابلیت خراب را دوباره آزمایش کنید. اگر با قالب پیش‌فرض مشکل رفت، متهم جفتِ افزونه-قالب است؛ اگر ماند، متهم افزونه است و به روش دودویی برگردید. این آزمون پنج دقیقه است، به هیچ ابزار اضافه‌ای نیاز ندارد و یکی از پرتکرارترین صرفه‌جویی‌های زمانیِ کل مسیر تشخیص به حساب می‌آید.

دو تذکر برای این آزمون: اول، تغییر قالب در سایت زنده، چیدمان و ویجت‌ها را ممکن است جابه‌جا کند؛ در محیط آزمایشی انجامش دهید یا بلافاصله برگردانید. دوم، قالب‌های صفحه‌ساز خودشان لایهٔ جداگانه‌ای از اسکریپت اضافه می‌کنند؛ اگر سایت‌تان با صفحه‌ساز ساخته شده، قبل از قالب، خود صفحه‌ساز را هم در فهرست متهمان بگذارید و مرتب آزمایش کنید. معیارهای انتخاب قالبی که این جنس تداخل‌ها را کم می‌کند، در {L130[1]} مرور شده است؛ قالب سبک‌تر و کم‌اسکریپت‌تر، به‌ تجربهٔ ما هم سریع‌تر است و هم کم‌دردسرتر.

پس از یافتن مقصر؛ سه مسیر حل

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

مسیر دوم، جایگزینی است: اگر به‌روزرسانی جواب نداد، یک افزونهٔ هم‌کارِ کمتر برخوردی جای متهم بگذارید و افزونهٔ مشابه را حذف کنید — دو ابزار برای یک کار، همیشه کاندیدای حذف است. مسیر سوم، جداسازی است: وقتی قابلیت افزونه برای شما حیاتی است و حذفش ممکن نیست، تنظیماتش را طوری ببندید که با بقیه هم‌پوشانی نکند — مثلاً بارگذاری اسکریپت افزونه را فقط به صفحاتی که واقعاً لازم دارند محدود کنید. هر سه مسیر یک قاعدهٔ مشترک دارند: بعد از هر تغییر، همان آزمون اول را تکرار کنید تا بسته‌شدن پرونده مستند باشد، نه حسی.

پیشگیری؛ سه قاعدهٔ انتخاب و به‌روزرسانی

سه قاعدهٔ پیشگیری از تداخل
تعداد زیاد افزونه به‌خودی‌خود بد نیست؛ هم‌پوشانی نقش‌ها است که ریسک می‌سازد.

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

اگر ترجیح می‌دهید این چرخهٔ فنی را به تیم ثابت بسپارید، مسیر عملی این است: وضعیت فعلی دامنه را با امکانات و کشف رایگان پلتفرم سوئیت ببینید و بعد از دموی رایگان، پایش و نگهداری را برنامه‌مند کنید. مرز صادقانهٔ این آموزش را هم نگه داریم: این متن تشخیص تداخل را آموزش می‌دهد، نه بهبود رتبه را؛ تداخل رفع‌شده سایت را به حالت عادی برمی‌گرداند و هیچ وعدهٔ دیگری همراهش نیست.

دموی رایگان پلتفرم

پلن بینش — ۲٫۹ میلیون تومان/ماه (ممیزی + ۱۰ محتوای سئو)

دموی رایگان پلتفرم

رصد ما، رشد شما.

سؤالات پرتکرار

چطور بفهمم مشکل از تداخل افزونه‌ها است و نه از سرور؟

نشانهٔ کلاسیک این است که مشکل بعد از نصب یا به‌روزرسانی یک افزونه شروع شده باشد؛ اگر همان لحظه خطای ۵۰۰ یا قطعی هاست هم داشتید، اول لاگ سرور را ببینید. تست قالب پیش‌فرض و روش دودویی همین را در چند مرحله مشخص می‌کند.

بدون دسترسی به پنل مدیریت هم می‌شود تداخل را تشخیص داد؟

بله؛ پوشهٔ plugins را از فایل‌منیجر هاست موقتاً تغییر نام دهید تا همهٔ افزونه‌ها غیرفعال شوند و بعد نصف‌به‌نیم برگردانید. روش دودویی همین است، فقط با فایل‌منیجر به‌جای پنل.

آیا به‌روزرسانی خودکار افزونه‌ها تداخل می‌آورد؟

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

چند افزونه برای وردپرس زیاد است؟

عدد جادویی ندارد؛ آنچه اهمیت دارد هم‌پوشانی نقش‌ها است. دو افزونهٔ سئو یا دو افزونهٔ کش هم‌زمان، حتی با تعداد کم، پرریسک‌تر از ده افزونهٔ بدون هم‌پوشانی است.

قبل از شروع تشخیص حتماً بکاپ لازم است؟

بله؛ غیرفعال‌سازی و به‌روزرسانی در جریان تشخیص، تنظیمات را تغییر می‌دهد. بکاپ کامل فایل و دیتابیس همان روز، راه برگشت شماست و در صفحهٔ امنیت و پشتیبان‌گیری روش منظمش آمده است.