让代码更简单

WordPress6.0 禁用邮件找回密码以及修改该邮件内容钩子

重要:本文最后更新于2022-06-09 21:18:53,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

曾经在开发主题的时候,如果遇到邮件找回密码,一般都是自己写一套发送邮件的过程。从WordPress6.0开始就不必这样做了,我们仅需使用官方提供的钩子,即可随意修改邮件标题及内容,甚至直接禁用邮件找回密码功能。

  • send_retrieve_password_email可用于过滤是否发送找回密码邮件
  • retrieve_password_notification_email可用于过滤发送给用户的重置密码通知邮件的内容。

为了与一些类似的过滤器(如send_password_change_emailsend_email_change_email)保持一致,并获得更大的灵活性,请将$user_login$user_data参数直接传递给新的send_retrieve_password_emailretrieve_password_notification_email过滤器。

复制
apply_filters( 'send_retrieve_password_email', true, $user_login, $user_data );
apply_filters( 'retrieve_password_notification_email', $defaults, $key, $user_login, $user_data );

禁用邮件找回密码

以下代码可以全局禁用发送密码找回邮件,也可以按照提示通过 $user_login, $user_data 两个参数来添加限制条件:

复制
function dmd_disable_retrieve_password_email( $user_login, $user_data ){
// 如果你希望符合某类条件的才禁止发送,那你可以通过 $user_login, $user_data 这两个参数来做判断
return false; 
}
add_filter( 'send_retrieve_password_email', 'dmd_disable_retrieve_password_email', 10, 2 );

修改密码找回邮件的内容

retrieve_password_notification_email 承接的 $defaults 内容包括邮件的收件人、标题、信息和Headers头部信息:

复制
$defaults = array(
'to' => $user_email,
'subject' => $title,
'message' => $message,
'headers' => '',
);

所以,retrieve_password_notification_email 是可以直接修改以上四项内容的。代码范例如下

复制
function dmd_filter_retrieve_password_notification_email( $defaults, $key, $user_login, $user_data ){

// 可以通过 $key, $user_login, $user_data 三个参数来获取和传递一些用户信息值
// 收件人邮箱 to 不能修改,否则他会收不到
// $defaults['title'] = '自定义标题';
// $defaults['message'] = '自定义消息';
// $defaults['headers'] = '自定义headers'; //一般情况下不需要修改
return $defaults;
}
add_filter( 'retrieve_password_notification_email', 'dmd_filter_retrieve_password_notification_email', 10, 4 );

另外还有两个钩子:

retrieve_password_title 专门用于修改找回密码邮件的标题
retrieve_password_message 专门用于修改找回密码邮件的消息

根据实际需要,灵活选择对应的wordpress钩子

感觉很棒!可以赞赏支持我哟~

1 打赏

评论 (1)

登录后评论
这钩子我记住了
QQ咨询 邮件咨询 狗哥推荐