انواع روش های خطایابی در وردپرس

وردپرس ابزارها و روشهای مختلفی به منظور اشکال زدایی و پیدا کردن خطاهای خود ارائه می دهد که می توانید به راحتی و با اضافه کردن چند خط کد از آنها استفاده کنید، در این پست آموزشی می خواهیم به تعدادی از این موارد اشاره کنیم.

۱- ثابت WP_DEBUG

معمول ترین روش اشکال زدایی فعال کردن ثابت سراسری WP_DEBUG است، ثابت فوق دو زیر مجموعه به نام های WP_DEBUG_LOG(پیغام های خطا را در لاگ فایل ثبت می کند) و WP_DEBUG_DISPLAY(پیغام های خطا را در صفحه نمایش نشان می دهد) دارد، برای تنظیم مقادیر این ثوابت باید از فایل کانفیگ وردپرس (wp-config.php) به صورت زیر استفاده کنید.

define( "WP_DEBUG", true );
define( "WP_DEBUG_DISPLAY", true );
define( "WP_DEBUG_LOG", true );

 

در پست آموزشی چگونه خطاهای وردپرس را ردیابی کنیم؟ به تفصیل در اینباره صحبت کردیم.

۲- تابع is_wp_error

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

در مثال زیر اگر نتیجه اجرای تابع wp_insert_post دچار خطا شود، شرط if برقرار خواهد شد و متد get_error_message متعلق به کلاس wp_error علت خطا را نمایش می دهد.

$new_post = array(
    'post_title'    => 'ترفندهای خطایابی در وردپرس',
    'post_content'  => 'روشهای مختلفی برای مدیریت خطاها در وردپرس ....',
    'post_status'   => 'publish',
    'post_author'   => 1
);
$result = wp_insert_post( $new_post );

if( is_wp_error($result) ){
    echo $return->get_error_message();
}

 

۳- افزونه WP PHP Console

اکثر توسعه دهندگان اولین کاری که پس از بروز خطا انجام می دهند استفاده از تابع var_dump و چاپ مقادیر متغیرهاست، اما مشکل این است که var_dump خروجی مناسب و خوانایی ارائه نمی دهد و نتیجه را مستقیما در صفحه نمایش چاپ می کند.

برای حل مشکل فوق افزونه WP PHP Console این امکان را به شما می دهد به جای چاپ مقادیر در صفحه نمایش از کنسول مرورگر وب(Developer Tools) استفاده نمائید، در پست آموزشی خطایابی وردپرس: چگونه به جای تابع var_dump از console.log استفاده کنیم؟ مراحل نصب و راه اندازی افزونه فوق آموزش داده شده است.

۴- افزونه های خطایابی(Debugging)

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

  1. Query Monitor : اطلاعات دقیقی از کوئری های ارسالی به دیتابیس وردپرس، توابع فراخوانی شده، مصرف حافظه و … ارائه می دهد.
  2. Simply Show Hooks : این افزونه کلیه اکشن ها و فیلترهایی که در صفحه جاری اجرا شده اند را همراه با متدها و الویت آنها نشان می دهد.
  3. Debug Bar : پس از نصب افزونه دکمه ای با عنوان Debug در Admin Bar وردپرس اضافه خواهد شد که با کلیک بر روی آن اطلاعات خوبی در رابطه با هر صفحه بدست می آورید.
  4. Log Deprecated Notices : افزونه فوق کلیه فایل ها، توابع و آرگومان هایی که منسوخ شده اند را گزارش می دهد.

۵- کش مرورگر

مرورگر وب به منظور افزایش سرعت لود وب سایت ابتدا فایل های CSS و JS را برای اولین بار از سرور اصلی و در دفعات بعدی از کش خود دانلود می کند، اما این مکانیزم گاهی اوقات موجب دردسر می شود و مرورگر آخرین تغییرات را از منبع اصلی دریافت نمی کند، در نتیجه ممکن است خطاهایی مشاهده کنید که مربوط به نسخه های قبلی موجود در کش مرورگر باشد.

برای حل این مشکل سه رویکرد وجود دارد:

  1. کلیدهای ترکیبی CTRL+F5 (اصطلاحا Hard Refresh کردن مرورگر)
  2. غیرفعال کردن کش مرورگر (توصیه نمی شود)
  3. جلوگیری از کش شدن فایل های CSS و JS در محیط توسعه وردپرس (روش پیشنهادی)

۶- خطاهای PHP

یکی دیگر از روش های خطایابی استفاده از لاگ خطاهای پی اچ پی(PHP Error Log) است، فایل Log هر گونه خطای موجود در کدهای PHP را ثبت و ضبط می کند و شما می توانید به عنوان گزارش خطا از آن استفاده نمائید. محل ذخیره سازی لاگ در فایل php.ini تعیین می شود، برای مشاهده تنظیمات php.ini تابع phpinfo را اجرا کرده و کلمه error_log را جستجو کنید، پیشنهاد می کنیم مطلب آموزشی بدست آوردن تنظیمات سرور به کمک phpinfo را مطالعه فرمائید.

خطایابی کدهای php

اگر به فایل php.ini دسترسی دارید از وجود خطوط زیر مطمئن شوید.

display_errors = Off
log_errors = On
error_log = c:\xampp\php\logs\php_error.log

۷- ثابت SCRIPT_DEBUG

وردپرس برای اینکه سرعت بارگذاری صفحات وب را افزایش دهد به صورت پیش فرض نسخه فشرده شده(Minified) فایل های CSS و JS را فراخوانی می کند، اما راهکار فوق برای خطایابی در محیط توسعه می تواند دردسرساز باشد. برای رفع این مشکل خط زیر را به فایل wp-config.php اضافه کنید.

define( 'SCRIPT_DEBUG', true );

 

وقتی مقدار SCRIPT_DEBUG را برابر true قرار می دهید وردپرس به صورت خودکار نسخه غیرفشرده(Non-Minified) کلیه فایل های CSS و JS را لود خواهد کرد.

۸- ثابت SAVE QUERIES

ثابت فوق کلیه کوئری هایی که بر روی دیتابیس اجرا می شود را در یک آرایه ذخیره می کند، برای فعال سازی این قابلیت خط زیر را به فایل wp-config.php اضافه کنید.

define( 'SAVEQUERIES', true );

 

حالا برای دسترسی به آرایه فوق بدین صورت عمل نمائید.

$wpdb->queries

 

ثابت SAVE QUERIES را فقط در محیط توسعه(Dev) فعال کنید، چرا که بر روی سرعت و عملکرد وب سایت تان تاثیرگذار خواهد بود.

۹- خطایابی wpdb

همانطور که می دانید کلاس wpdb به شما اجازه می دهد مستقیما با دیتابیس وردپرس ارتباط برقرار کرده و کوئری های مختلفی بر روی آن اجرا نمائید. خوشبختانه wpdb متدهای خطایابی دارد که صحت اجرای کوئری ها را بررسی می کنند، در مثال زیر نمونه ای از آن را مشاهده می کنید.

global $wpdb;
$wpdb->show_errors = TRUE;
$result = $wpdb->get_results( 'SELECT post_title FROM ' . $wpdb->posts );
if( ! $result ){
    $wpdb->print_error();
    echo $wpdb->last_query;
}

 

جمع بندی

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

نظرات و سوالات کاربران

پاسخی بگذارید

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