Каждый уважающий себя разработчик перед началом работы над темой или плагином запустит отладчик. Собственно, WordPress Codex настоятельно рекомендует разработчикам использовать режим WP_DEBUG при работе над кодом, который они собираются выпускать в мир.
К сожалению, многие разработчики не следуют этому совету просто потому, что забывают о встроенных в WordPress инструментах отладки или просто не умеют с ними работать.
В этой статье я пройдусь по основным имеющимся в наличии средствам отладки для WordPress и покажу вам, насколько они просты в использовании.
Отладка с помощью WP_DEBUG
Основное средство разработки, о котором вам нужно знать — WP_DEBUG.
WP_DEBUG — это константа типа boolean, которая включает режим отладки в WordPress. Она находится в файле wp-config.php в вашей папке WordPress.
Если ее значение установлено "true", вы увидите извещения PHP на страницах сайта (не столько ошибки, сколько полезные для разработчиков сообщения и WordPress сообщения, в частности информация об устаревших функциях).
Устаревшие функции содержатся во многих релизах WordPress. Важно знать, используете ли вы устаревшую функцию в теме или плагине, над которыми вы работаете, чтобы найти ее замену.
Чтобы включить WP_DEBUG, просто добавьте следующий код в ваш файл wp-config.php:
define( 'WP_DEBUG', true );
Чтобы отключить режим, просто замените "true" на "false". Для WP_DEBUG по умолчанию установлено значение false. WP_DEBUG предоставляет удобный способ поиска решения проблем, если что-то с вашим сайтом пошло не так.
Важно помнить, что WP_DEBUG не должен использоваться на живом сайте. Эта возможность удобна при разработке, но может быть опасной на живом сайте, поскольку текст в уведомлениях PHP может показать детали вашего кода, пути к файлам и другую информацию вашим посетителям.
Записи ошибок с помощью WP_DEBUG_LOG
Другой удобный инструмент — WP_DEBUG_LOG, который может использоваться в сочетании с WP_DEBUG для сохранения всех ошибок в файл debug.log, размещенный в папке /wp-content/ вашего сайта.
Это очень удобная штука, если вы хотите потом просмотреть сообщения.
Чтобы включить запись логов отладки, просто добавьте в ваш файл wp-config.php следующий код:
define('WP_DEBUG_LOG', true);
Выключение отображения ошибок на сайте с помощью WP_DEBUG_DISPLAY
Если вы не хотите, чтобы ошибки отображались на вашем сайте, вы должны использовать WP_DEBUG_DISPLAY.
Это еще одна полезная константа, которая позволяет вам выбирать, будут ли отладочные сообщения отображаться внутри HTML вашего сайта.
По умолчанию установлено значение "true", то есть все ошибки и предупреждения отображаются. Изменив значение на "false", вы спрячете все ошибки.
Эта константа должна быть использована в сочетании с WP_DEBUG_LOG.
Чтобы использовать эту возможность, просто добавьте в код вашего файла wp-config.php следующую строку:
define('WP_DEBUG_DISPLAY', false);
Все вместе
Эти три константы легко использовать вместе, если вы хотите включить отладку и запись логов сообщений об ошибках, но хотите скрыть уведомления на вашем сайте:
// Turn debugging on define('WP_DEBUG', true); // Tell WordPress to log everything to /wp-content/debug.log define('WP_DEBUG_LOG', true); // Turn off the display of error messages on your site define('WP_DEBUG_DISPLAY', false); // For good measure, you can also add the follow code, which will hide errors from being displayed on-screen @ini_set('display_errors', 0);
Не забывайте, что WP_DEBUG используется для локальной разработки и не должен использоваться на живых сайтах.
Комментарии к записи: 1
Там есть еще опция для сохранения выполненных SQL запросов define(‘SAVEQUERIES’, true);
define(‘WP_DEBUG’, true);
Все выглядит примерно так:
// Дополнительные параметры для отладки
if (WP_DEBUG) {
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
@ini_set(‘display_errors’,0);
@error_reporting(E_ALL ^ ( E_NOTICE & E_DEPRECATED ) );
}
/** Выключаем ревизию постов WP, не нужно для сайтов которые не являются блогами. **/
define(‘WP_POST_REVISIONS’, false);
/* Время автосохранения записи в сек. Сильно короткие инnервалы ставить не имеет смысла.*/
define( ‘AUTOSAVE_INTERVAL’, 320 );