Как изменить текст электронного письма для сброса пароля, используя кастомный плагин WordPress?

Вопрос или проблема

В WordPress я хочу добавить еще один параметр (ABC) в ссылку для восстановления пароля с ключом (текст письма для восстановления пароля).

Я добавил много хуков.

  1. add_action( 'password_reset', 'password_reset_hook', 10, 2 );
    этот хук не работает
  2. add_action( 'wp_loaded', array($this, 'process_user_lost_password' ), 20 );
    когда я вызываю вышеуказанное действие, тогда ключ для восстановления пароля генерируется и обновляется в базе данных.
    Затем снова вызывается стандартное действие восстановления пароля, которое также генерирует новый ключ и снова обновляет
    базу данных. Таким образом, когда я использую старый ключ, появляется сообщение “неверный ключ”. Как я могу решить эту проблему?
    Как я могу программно остановить отправку стандартного письма для восстановления пароля.
    Какой хук изменяет текст письма для восстановления пароля в WordPress?
  3. add_filter( 'retrieve_password_message', 'my_retrieve_password_message', 10, 4 );
    Этот фильтр не работает.

Пожалуйста, помогите мне.

Фильтр для сообщения, которое отправляется для восстановления пароля, называется retrieve_password_message. Вы используете его так:

add_filter('retrieve_password_message','my_awesome_new_password_reset_email',10,4);

function my_awesome_new_password_reset_email($message, $key, $user_login, $user_data){
   $message = "Привет, тебе нужен новый пароль? Нажми здесь: ".site_url( "wp-login.php?action=rp&key=$key&login=".rawurlencode( $user_login ),'login')."!";
   return $message;
}

$message – это оригинальный текст письма, $key – это ключ для восстановления пароля, $user_login – это имя пользователя, а $user_data – это объект WP_User пользователя.
Если вы вернете пустую строку для $message, письмо для действия “восстановление пароля” не будет отправлено.

Счастливого кодирования!

Ответ или решение

Изменение текста электронной почты для сброса пароля в WordPress может быть выполнено с помощью пользовательского плагина. При этом вам нужно будет использовать фильтр retrieve_password_message, чтобы модифицировать содержимое письма, отправляемого пользователю с инструкциями по сбросу пароля. Давайте рассмотрим, как это сделать в детальных шагах.

Шаг 1: Создание пользовательского плагина

  1. Создайте папку для вашего плагина в директории /wp-content/plugins/ и назовите её, например, custom-password-reset-email.

  2. Создайте файл плагина в этой папке, назвав его custom-password-reset-email.php, и добавьте следующий код:

<?php
/**
 * Plugin Name: Custom Password Reset Email
 * Description: Изменяет текст электронной почты для сброса пароля, позволяя добавлять дополнительные параметры.
 * Version: 1.0
 * Author: Ваше Имя
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Защита от прямого доступа.
}

// Фильтр, который изменяет содержимое письма для сброса пароля
add_filter('retrieve_password_message', 'my_custom_password_reset_email', 10, 4);
function my_custom_password_reset_email($message, $key, $user_login, $user_data) {
    // Вставляем дополнительный параметр ABC в ссылку
    $extra_param = 'ABC';
    $reset_link = site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login) . "&extra_param=$extra_param", 'login');

    // Изменяем текст сообщения
    $message = "Привет, вам нужно установить новый пароль? Нажмите на ссылку: $reset_link";

    return $message;
}

Шаг 2: Активируйте ваш плагин

Перейдите в административную панель WordPress и активируйте ваш плагин из раздела "Плагины".

Шаг 3: Проверка работы

После активации плагина, попробуйте воспользоваться функцией «Забыли пароль?» на странице входа. Убедитесь, что сообщение, которое приходит на электронную почту, обновлено и содержит ваш новый текст с добавленным параметром.

Решение вопросов и проблем

Если вы столкнулись с проблемами, связанными с отправкой писем и перегенерацией ключа, попробуйте следующие шаги:

  1. Предотвращение двойного вызова: Проверьте, не вызывается ли ваш код несколько раз. Убедитесь, что у вас нет конфликтующих плагинов или настроек в файле functions.php.

  2. Использование подходящих хуков: Вместо того чтобы использовать password_reset и wp_loaded, сосредоточьтесь на фильтре retrieve_password_message, который непосредственно отвечает за текст письма.

Дополнительные советы

  • Рекомендуется тестировать ваш плагин в безопасной среде (например, на локальном сервере или staging сайте) перед развертыванием на живом сайте.
  • Следите за обновлениями WordPress, так как изменения в ядре могут влиять на работу ваших плагинов.

С помощью этих шагов вы сможете успешно изменить текст электронной почты для сброса пароля, добавив необходимые параметры и адаптируя сообщение под ваши нужды. Happy coding!

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

Капча загружается...