Отладка wp_mail в WordPress без плагина

Бывали ли у вас проблемы с отправкой почты с вашего WordPress сайта без видимых причин? Если да — то эта статья для вас.

Вся сложность отладки заключается в том, что wp_mail возвращает true или false в зависимости от результата функции, по которым невозможно понять, что же пошло не так.

Включение журналирования

Перед началом отладки необходимо включить запись всех ошибок в журнал WordPress. Для чего добавьте/измените значение специальных констант в файле конфигурации wp-config.php:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Теперь все ошибки, предупреждения и уведомления будут записываться в файл debug.log, расположенный в папке wp-content.

Более подробно о включении режима отладки и константах смотрите в статье «Дебаг в WordPress«.

Отладка wp-mail

В WordPress 4.4 появился замечательный хук wp_mail_failed, которым мы и воспользуемся. Для чего добавьте в файл functions.php вашей активной темы следующий сниппет:

function mihdan_debug_wp_mail( $wp_error ) {
    return error_log( print_r( $wp_error, true ) );
}
add_action( 'wp_mail_failed', 'mihdan_debug_wp_mail', 10, 1 );

Благодаря данному сниппету, вся информация об ошибках внутри wp_mail будет записана журнал ошибок WordPress, который мы включили ранее.

Источник: https://www.kobzarev.com/wordpress/debugging-wp-mail/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: