Статьи

Отладка в WordPress

Отладка вашего сайта очень важна для любого проекта, вам нужно будет иметь возможность отлаживать ваш сайт во всех средах, от локальных до живых . Но в зависимости от среды, вы можете отлаживать по-разному.

Например, в вашей локальной среде вы можете выводить все ошибки PHP на экран, чтобы упростить решение проблем, но вы не хотите, чтобы эти ошибки отображались на экране в вашей рабочей среде. Вы не захотите отображать эти ошибки посетителям вашего сайта, но вы также захотите отследить эти ошибки и сохранить их там, где вы сможете увидеть, что происходит не так.

Преимущество хранения этих ошибок позволяет вам заходить позже и исправлять любые ошибки, которые могут происходить на вашем действующем сайте.

WordPress поставляется со встроенной системой отладки, которая позволяет вам отлавливать и отображать ошибки любым удобным для вас способом. Изменение этих настроек в файле wp-config.php позволяет вам изменять методы отладки в различных средах.

WP_DEBUG

WP_DEBUG является PHP константа , которая позволяет поставить WordPress в режим отладки, когда WordPress находится в режиме отладки он позволяет определить , если вы хотите выводить сообщение об ошибке на экране или в отладочный лог — файл.

Если вы хотите включить отладку, вам нужно добавить следующую строку в ваш файл wp-config.php.

// Turn on wp_debug
define('WP_DEBUG', true);

// Turn off wp_debug
define('WP_DEBUG', false);

Когда WP_DEBUG включен, он переопределяет настройки по умолчанию error_reporting в вашем файле php.ini и изменяет его для отображения всех ошибок, уведомлений и предупреждений PHP. Отображение ошибок покажет проблемы, которые сломают ваш код. В уведомлениях и предупреждениях будут отображаться проблемы с кодом, которые могут не взломать сайт, но не соответствуют правильным правилам PHP.

WP_DEBUG_LOG

Если вы хотите записать все ошибки в файл, чтобы потом их можно было расследовать, вам следует использовать константу WP_DEBUG_LOG в файле wp-config.php. Когда для этой константы установлено значение true, все ошибки будут выводиться в файл debug.log, который будет храниться в папке wp-content .

define('WP_DEBUG_LOG', true);

WP_DEBUG_DISPLAY

По умолчанию ошибки WordPress будут отображаться на экране. Если вы просто регистрируете ошибки в файле debug.log, вы можете отключить отображение ошибок на экране, но установив для константы значение false.

define('WP_DEBUG_DISPLAY', false);

SCRIPT_DEBUG

По умолчанию ядро ​​WordPress будет использовать уменьшенные версии файлов CSS и JS, если вы хотите изменить это, чтобы WordPress использовал полную версию dev и CSS и JS, тогда вы можете установить для переменной SCRIPT_DEBUG значение true.

define('SCRIPT_DEBUG', true);

SAVEQUERIES

Для отладки запросов к базе данных вы можете использовать эту константу-переменную SAVEQUERIES , в которой будут храниться все запросы, сделанные в базе данных, и время, необходимое для их выполнения. Помните, что это может замедлить работу вашего сайта, поэтому убедитесь, что он включен только во время отладки.

define('SAVEQUERIES', true);

Чтобы проверить эти запросы, вы можете получить к ним доступ в глобальной переменной $ wpdb .

echo '<pre>';
var_dump($wpdb->queries);
echo '</pre>';

Изменение отладки в зависимости от среды

Понимание, что означают эти различные настройки, означает, что мы можем быть уверены, что делаем только определенные вещи в зависимости от среды.

Dev
В среде разработки вы хотели бы включить отладку, отобразить их на экране и сохранить ошибки в файле отладки.

UAT
В среде UAT вы все равно хотите отлаживать, но не хотите отображать их на экране, чтобы мы могли сохранить их в файле отладки.

Live
В среде Live вы, возможно, исправите все ошибки в своем коде, чтобы можно было отключить отладку.

Чтобы изменить это в wp-config.php, вы можете использовать следующий код.

switch( $_SERVER['SERVER_NAME'])
{
    // Dev
    case 'dev.example.com':
        define('WP_DEBUG', true);
        define('WP_DEBUG_LOG', true);

        define('ENV', 'dev');
    break;
    
    // UAT
    case 'uat.example.com':
        define('WP_DEBUG', true);
        define('WP_DEBUG_LOG', true);
        define('WP_DEBUG_DISPLAY', false);

        define('ENV', 'uat');
    break;
    
    // Live
    case 'live.example.com':
        define('WP_DEBUG', false);

        define('ENV', 'live');
    break;
}