تو یه دنیای کامل و به قول معروف یه مدینه فاضله شما هیچ مشکلی با هیچ چیزی ندارین و همه وسیلهها صحیح و سالمن و همه سایت های وردپرسی مثل برق کار میکنن و لازم نیست که بخواین اونها رو عیب یابی کنین پس خیالتون از این بابت راحته و هیچوقت سراغ روشهای عیب یابی و استفاده از افزونه های مختلف برای این کار نمیرین. اما خب تو دنیای واقعی از این خبرها نیست و اگه همه زندگیتون هم بدون عیب و ایراد و پر از گل و بلبل باشه، حداقل تو وردپرس یه ایرادی پیدا میشه که به قابلیت wp debug وردپرس نیاز پیدا کنین و شما رو از فکر مدینه فاضله بکشه بیرون.
برای این که تو این قضیه عیب یابی به شما کمکی کرده باشیم، امروز یه مقاله در باب حالت عیب یابی وردپرس آماده کردیم که میتونین طبق اون با ابزارهای DeBug آشنا بشین و خیلی راحت تو سایت وردپرسی خودتون ازش استفاده کنین.
در کل اشکال زدایی کد PHP بخشی از هر پروژه است ، اما WordPress دارای سیستمهای اشکال زدایی خاصی است که برای ساده سازی فرآیند و همچنین استاندارد کردن کد در هسته، پلاگین ها و تم ها طراحی شده.
یادتون باشه که برای این کار روشهای خیلی زیادی وجود داره و ما چندتا از بهترینهای اونها رو براتون آماده کردیم پس خودتون رو آماده کنین تا از شر خطاهای سایت راحت بشین:
قابلیت WP debug وردپرس دقیقاً چیکار میکنه؟
اول از همه باید بدونیم اصلاً این حالت چیه و چه کاری از دستش بر میاد و بعد بریم سراغ فعال کردنش.
همونطوری که همه در جریان هستیم نرم افزار اصلی وردپرس به صورت افزونه ها و تم هایی به زبان PHP نوشته شده.
حالا اگه شما با سایت خودتون به مشکلی برخوردین، حالت دیباگ در وردپرس میتونه به شما کمک کنه تا همه خطاهای موجود رو ببینین و متوجه اشتباه پیش اومده بشین.
هنگامی که حالت اشکال زدایی رو فعال کردین، هر زمان که مشکلی پیش اومد پیامهایی مثل پیام زیر رو مشاهد میکنین:
سپس میتونین مشکل به وجود اومده رو برطرف کنین و یا این که اون رو به برنامه نویس یا توسعه دهنده تم یا افزونه خودتون اطلاع بدین.
به قول خود وردپرس: WP_DEBUG یه ثابت PHP (یه متغیر ثابت جهانی) است که میتونه برای شروع حالت «اشکال زدایی» در سراسر وردپرس استفاده بشه. فرض بر اینه که اون به طور پیش فرض روی حالت False است و معمولاً در پرونده wp-config.php در نسخههای توسعه وردپرس برای True شدن تنظیم میشه.
فعال کردن WP_DEBUG باعث نمایش همه خطاها، اعلامیهها و اخطارهای PHP میشه. این امر به احتمال زیاد باعث تغییر رفتار پیش فرض PHP هم میشه و فقط خطاهای مهلک رو نشون میده و یا موقع رسیدن خطاها صفحه سفید مرگ رو نشان میده.
لاگ اشکال زدایی WordPress چیه؟
وقتی حالت اشکال زدایی وردپرس رو به تنهایی فعال میکنین، پیامهایی مثل پیام بالا رو در سایت خودتون مشاهده میکنین، اما این پیامها هیچجا ذخیره نمیشن.
اگه میخواین که اونها رو ذخیره کنین میتونین لاگ دیباگ وردپرس یا wp debug log رو هم فعال کنین تا همه پیامها و خطاها رو در پروندهای روی سرور خودتون ذخیره کنین و تو مواقع ضروری اونها رو بررسی کنین تا دلیل خطاهای پیش اومده رو بهتر متوجه بشین.
وقتی که WP_DEBUG_LOG فعال شد، وردپرس همه موارد پیش اومده رو تو پرونده زیر مینویسه:
wp-content/debug.log
با این حال شما همچنین میتونین مسیر فایل سفارشی رو برای نوشتن گزارش در یه مکان دیگهای روی سرور خودتون تعیین کنین.
اگه میخواین مشکلات رو برای ورود به سیستم ذخیره کنین اما اونها رو به طور عمومی در HTML صفحات نشون ندین (مثل همون تصویر بالا)، میتونین از WP_DEBUG_DISPLAY استفاده کنین تا حالت دیباگ در وردپرس WordPress فعال بشه اما پیامها در سایت نشون داده نشن.
نحوه فعال کردن قابلیت WP debug وردپرس
برای فعال کردن قابلیت wp-debug وردپرس ، چندتا آپشن دارین که ما دو تا از اونها رو تو این مقاله براتون پوشش دادیم و علاوه بر اون یه سری روشهای دیگهای هم به شما معرفی میکنیم که میتونن تو عیب یابی وردپرس بهتون کمک کنن.
فعالسازی قابلیت wp-debug وردپرس با استفاده از پلاگین
شما برای فعال کردن حالت اشکال زدایی در وردپرس میتونین پلاگین های مربوطه رو پیدا کنین که اتفاقاً کار دیباگ کردن رو خیلی راحت میکنن. مثلاً میتونین تو قسمت WordPress.org گزینههای مختلفی رو ببینین اما پیشنهاد ما افزونه رایگان WP Debugging از Andy Fragen است که خیلی خیلی به کارمون میاد و چیز خوبیه.
این افزونه بلافاصله بعد از نصب و فعالسازی کارش رو شروع میکنه و به طور پیش فرض مقادیر ثابت زیر رو در حالت True که به معنی فعال بودنه، میذاره:
◊WP_DEBUG- enables debug mode.
◊WP_DEBUG_LOG- saves messages to a log file.
◊SCRIPT_DEBUG
◊SAVEQUERIES
برای پیکربندی تعدادی از گزینهها باید به آدرس زیر برین:
Tools→WP Debugging
البته یادتون باشه که به محض این که کارتون تموم شد، حتماً افزونه رو غیرفعال کنین تا حالت اشکال زدایی هم غیرفعال بشه.
فعالسازی دستی قابلیت wp-debug وردپرس
روش بالایی یه روش با استفاده از افزونه بود، اما خب اگه دلتون نمیخواد افزونه ای دانلود کنین اصلاً مشکلی نیست چون ما تو این مقاله یه روش دستی هم به شما یاد میدیم که طرفدارهای خاص خودش رو داره:
همونطوری که گفتیم یکی دیگه از روشهای فعال کردن حالت اشکال زدایی در وردپرس، افزودن ثابت در فایل wp-config.php است.
برای شروع میتونین از طریق کلاینت FTP به سرور خودتون متصل بشین و پرونده wp-config.php رو ویرایش کنین. به طور پیش فرض این پوشه در قسمت Root سایت شما وجود داره (مگه این که خودتون اون رو به دلایل امنیتی منتقل کرده باشین).
حالا برای فعال کردن حالت اولیه اشکال زدایی WordPress فقط کافیه قطعه کد زیر رو به بالای خطی که /* That’s all, stop editing! Happy blogging */ میگه اضافه کنین:
// Enable WP_DEBUG mode
define( ‘WP_DEBUG’, true );
همچنین میتونین مطابق با میل و ترجیح خودتون، از بعضی از ثابتهای زیر استفاده کنین:
// Enable Debug logging to the /wp-content/debug.log file
define( ‘WP_DEBUG_LOG’, true );
// Disable display of errors and warnings
define( ‘WP_DEBUG_DISPLAY’, false );
@ini_set( ‘display_errors’, 0 );
بعد از اتمام کار میتونین ثابتها رو روی حالت False بذارین و یا قطعه رو پاک کنین تا حالت دیباگ متوقف بشه.
غیرفعال کردن قابلیت wp debug وردپرس
قابلیت wp debug وردپرس وقتی مفیده که شما میخواین سایت وردپرس خودتون رو عیب یابی کنین یا یه خطایی رو مشاهده کنین، پس روشن نگهداشتن 24 ساعته اون اصلاً توصیه نمیشه بخاطر این که میتونه یه تیکه از متن کد PHP رو به بازدید کنندگان نشون بده و این قطعاً چیزی نیست که شما دلتون میخواد!
پس بلافاصله بعد از تموم شدن کار اشکال زدایی، اون رو غیرفعال کنین.
روشهای دیگه برای دیباگ وردپرس
همونطوری که اول مقاله هم گفتیم، به جز ابزارهایی که تو قسمت بالا معرفی کردیم، روشهای دیگهای هم برای رفع اشکال در وردپرس وجود دارن که میتونن کمک زیادی به شما کنن، ما سه تا از این روشها رو برای شما مثال میزنیم که میتونین طبق میل خودتون از هرکدوم که خواستین استفاده کنین.
Script Debug
اسکریپت دیباگ یا SCRIPT_DEBUG یکی دیگه از ثابتهای داخلی است که وردپرس رو مجبور میکنه به جای نسخههای minified که معمولاً دانلود میکنه، از نسخههای dev هسته CSS و JavaScript استفاده کنه.
این روش برای آزمایش تغییراتی که در پرونده js. یا css. ایجاد شدن، میتونه خیلی مفید باشه. برای فعال کردن اسکریپت دیباگ، میتونین روش زیر رو امتحان کنین:
- از افزونه رایگان WP Debugging بالا استفاده کنین تا اون رو به صورت پیش فرض فعال کنه.
- این ثابت رو به فایل wp-config.php اضافه کنبن: define( ‘SCRIPT_DEBUG’, true );
Database Query Debugging
مورد بعدی برای فعال کردن حالت دیباگ در وردپرس استفاده از Database Query Debugging است که برای فعال کردن اون میتونین از ثابت SAVEQUERY استفاده کنین و موارد زیر رو ردیابی کنین:
- هر کوئری از پایگاه داده
- تابعی که کوئری پایگاه داده نامیده میشه
- مدت زمانی که کوئری طول میکشه
البته علاوه بر روش بالا، برای فعال کردن حالت Database Query Debugging میتونین اقدامات زیر رو هم انجام بدین:
- از پلاگین رایگان WP Debugging استفاده کنین تا به صورت پیش فرض فعال بشه.
- این ثابت رو به پرونده wp-config.php اضافه کنین: define( ‘SAVEQUERIES’, true );
این عملیات روی عملکرد سایت شما تاثیر میذاره، پس سعی کنین از اون تو یه سایتی که در مرحله استقرار هست، استفاده کنین و بلافاصله بعد از این که کار اشکال زدایی تموم شد، غیرفعالش کنین.
Query Monitor Plugin
افزونه Query Monitor یه افزونه رایگان است که برای اشکال زدایی قسمتهای زیادی از وردپرس به درد میخوره، از جمله:
- Database queries
- PHP errors
- Hooks and actions
- Block editor blocks
- Enqueued scripts and stylesheets
- HTTP API calls
- User capabilities
به طور کلی این یکی از بهترین افزونه هایی است که شما میتونین برای قابلیت wp debug وردپرس پیدا کنین و تازه بین 320 نظر کاربران، رتبه خیلی خوبی به دست آورده!
پس از نصب و فعال سازی افزونه، گزینههای جدیدی رو در نوار ابزار WordPress دریافت خواهید کرد که اطلاعات اشکال زدایی رو بهتون نشون میده. با کلیک بر روی این گزینهها یه کادر جستجوی نمایشگر جدید باز میشه که اطلاعات بیشتری به شما میده.
New Relic
New Relic یه ابزار برتر برای اشکال زدایی و تجزیه و تحلیل عملکرد شما در سایت وردپرسی است. این ابزار به شما کمک میکنه تا تنگناها و مواردی که بر عملکرد سایت شما تاثیر میذاره رو پیدا کنین.
SAVEQUERY
این مورد میتونه داده های پایگاه داده رو در یه آرایه ذخیره کنه و این آرایه هم میتونه برای تجزیه و تحلیل اون کوئری ها نمایش داده بشه. ثابت تعریف شده به عنوان True مشخص میکنه که چه کوئری باید ذخیره بشه، چه مدت زمانی طول میکشه تا اون کوئری انجام بشه.
define( ‘SAVEQUERIES’, true );
این آرایه در wpdb->queries$ گلوبال ذخیره میشه.
Server Logs
و در آخر Server Logs رو داریم که میتونه ابزار مفیدی برای اشکال زدایی در وردپرس باشه. البته باید برای اینکه بدونین محل ذخیره شدن لاگ های سرور کجاست ، با وب هاستینگی که دارین مشورت کنین و آدرس دقیق این فولدر رو ازشون بگیرین.
و در آخر بدونین که …
درصورت نیاز به عیب یابی و مشاهده خطاهای PHP میتونین از قابلیت wp debug وردپرس استفاده کنین.
تمام این روشهایی که بهتون پیشنهاد دادیم میتونن به شما کمک خیلی خوبی بکنن و تنها تفاوتشون تو اینه که شما با کدوم یکی از اونها بیشنر احساس راحتی میکنین، پس زیاد وسواس به خرج ندین و اون افزونه یا ابزاری که مناسب شماست رو انتخاب کنین.
ما از این روشها برای عیب یابی انواع خطاهای وردپرسی استفاده میکنیم تا کارمون راحتتر و سریعتر پیش بره.
یادتون باشه که استفاده از WP_DEBUG یا سایر ابزارهای اشکال زدایی در سایت های زنده به هیچ وجه توصیه نمیشه. از اونها زمانی استفاده کنین که سایت در مرحله تست یا استقرار است.
چند بار گفتم این دم آخری باز هم میگم یادتون نره بعد از اشکال زدایی حالت دیباگ وردپرس رو غیرفعال کنین!
هر سوالی در رابطه با این موضوع دارین میتونین از طریق کامنت ها با ما در ارتباط باشین.