Как установить уведомление по электронной почте в WordPress для обработчика фатальных ошибок (WSoD)

#wordpress #wordpress-plugin-creation #wsod #hook-wordpress

#wordpress #wordpress-создание плагина #wsod #hook-wordpress

Вопрос:

WordPress 5.2 интегрировал защиту WSoD, которая по умолчанию отправляет администратору уведомление по электронной почте, когда сайт обнаруживает какую-либо фатальную ошибку. Я создал для своего клиента сайт, на котором я хотел бы отслеживать такую ошибку на случай, если это произойдет, но я не хочу вставлять роль администратора на свой клиентский сайт только для этой цели. Есть ли какой-нибудь крючок, с помощью которого я также могу установить дополнительное электронное письмо технической поддержки, если такие события произойдут?

Ответ №1:

Вы ищете хуки режима восстановления. Первый способ, более простой, — это установка RECOVERY_MODE_EMAIL константы внутри вашего wp-config.php .

 define( 'RECOVERY_MODE_EMAIL', 'you@example.com' );
 

Также можно изменить адрес электронной почты в режиме восстановления с помощью recovery_mode_email фильтра:

 add_filter( 'recovery_mode_email', function( $email ) {
    $email['to'] = 'you@example.com';
    return $email;
} );
 

Таким образом, вы получите почту вместо своего клиента, клиент не испугается, и вы будете проинформированы о проблеме. Если вы хотите, чтобы это было отправлено на несколько адресов, верните электронные письма в виде массива:

 add_filter( 'recovery_mode_email', function( $email ) {
    $email['to'] = array('you1@example.com', 'you2@example.com');
    return $email;
} );
 

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

Ссылка

Комментарии:

1. @GeorageP, спасибо за подробное объяснение. Интересно, будет ли фильтр ‘recovery_mode_email’ работать в mu-плагине?

2. Да, и это рекомендуемый способ его использования вместо say functions.php . Смотрите: core.trac.wordpress.org/ticket/47939

3. привет @GeorageP, интересно, знаете ли вы, как я могу протестировать почту для восстановления? Я попытался сделать синтаксическую ошибку в одном плагине, но письмо для восстановления не отправляется ни администратору, ни моему дополнительному письму. Я проверил, работает ли служба электронной почты моего хоста. d

4. нужно ли мне включать режим восстановления вручную?