WordPress. Отладка кода

28.02.2019

Теги: CMSPHPWeb-разработкаWordPressОтладка

При разработке темы или плагина важно иметь возможность посмотреть, где произошла ошибка, когда что-то пошло не так. С помощью константы WP_DEBUG можно включать и выключать режим отладки. Константа WP_DEUBG_DISPLAY позволяет выводить ошибки на экран, константа WP_DEBUG_LOG сохраняет ошибки в лог-файл. Константы WP_DEBUG_DISPLAY и WP_DEBUG_LOG активируются, только если включена константа WP_DEBUG.

Задать true или false для этих констант можно в файле wp-config.php. По умолчанию они имеют такие значения:

define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', true);
define('WP_DEBUG_LOG', false);
// полезно определить еще одну константу, чтобы
// WP использовал полные версии JS и CSS файлов
define('SCRIPT_DEBUG', true); // 

Вставлять этот код можно в любое место файла wp-config.php, но до строки:

require_once( ABSPATH . 'wp-settings.php' );

Показ ошибок всегда отключен для AJAX запросов, там увидеть ошибки можно только через лог-файл. Это устанавливается в wp_debug_mode():

if (defined('XMLRPC_REQUEST') || defined('REST_REQUEST') ||
   (defined('WP_INSTALLING') && WP_INSTALLING) || wp_doing_ajax()) {
    @ini_set('display_errors', 0);
}

Если включена запись ошибок в файл:

define('WP_DEBUG', true);
// запись ошибок в файл /wp-content/debug.log
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', true);

То этим можно воспользоваться для записи переменных в этот файл:

error_log($data);                // переменная
error_log(print_r($data, true)); // массив

В WordPress 5.1, в качестве значения WP_DEBUG_LOG можно указать путь к файлу лога:

define('WP_DEBUG_LOG', '/custom/path/errors.log');

Константа WP_DEBUG не только включает показ ошибок PHP, но и добавляет замечания WordPress. Эти замечания предупреждают об устаревших функциях и предлагают альтернативы для замены.

Еще одна связанная с отладкой константана — SAVEQUERIES. При включении, все SQL-запросы будут сохраняться в переменную $wpdb->queries в виде массива. В этом массиве можно будет посмотреть все SQL запросы и при необходимости найти нужный.

define('SAVEQUERIES', true);

Поиск: CMS • PHP • Web-разработка • WordPress • Отладка • Debug • WP_DEBUG • WP_DEBUG_DISPLAY • WP_DEBUG_LOG • Ошибка • Константа

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.