#php #wordpress
#php #wordpress
Вопрос:
Я использую следующий фильтр для замены электронной почты для сброса пароля по умолчанию. Электронное письмо отправляется нормально, хотя при открытии логин отсутствует. Логин добавляется в два сообщения $user_login, и поскольку он возвращается пустым, URL-адрес для сброса пароля также не работает. Все остальное работает нормально, и если я вручную добавлю логин, URL-адрес также будет правильным.
Есть идеи, что это может быть?
add_filter('retrieve_password_message', 'my_reset_password_message', null, 2);
function my_reset_password_message( $message, $key ) {
if ( strpos($_POST['user_login'], '@') ) {
$user_data = get_user_by('email', trim($_POST['user_login']));
} else {
$login = trim($_POST['user_login']);
$user_data = get_user_by('login', $login);
}
$user_login = $user_data->user_login;
$msg = __('The password for the following account has been requested to be reset:'). "rnrn";
$msg .= network_site_url() . "rnrn";
$msg .= sprintf(__('Username: %s'), $user_login) . "rnrn";
$msg .= __('If this message was sent in error, please ignore this email.') . "rnrn";
$msg .= __('To reset your password, visit the following address:');
$msg .= network_site_url("wp-login.php?action=rpamp;key=$keyamp;login=" . rawurlencode($user_login), 'login');
return $msg;
}
Ответ №1:
Попробуйте с этим кодом —
add_filter("retrieve_password_message", "my_custom_password_reset", 99, 4);
function my_custom_password_reset($message, $key, $user_login, $user_data ){
$message = "Someone has requested a password reset for the following account: " . sprintf(__('%s'), $user_data->user_email) . " If this was a mistake, just ignore this email and nothing will happen. To reset your password, visit the following address: " . network_site_url("wp-login.php?action=rpamp;key=$keyamp;login=" . rawurlencode($user_login), 'login') . "rn";
return $message;
}