WordPress. Отладка кода
28.02.2019
Теги: CMS • PHP • Web-разработка • 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 • Ошибка • Константа