【问题标题】:Wordpress reset password email - Plain Text to HTMLWordpress 重置密码电子邮件 - 纯文本到 HTML
【发布时间】:2017-08-31 06:36:39
【问题描述】:

我需要以下脚本的帮助

public function replace_retrieve_password_message( $message, $key, $user_login, $user_data ) {
    // Create new message
    $msg  = __( 'Hello!', 'personalize-login' ) . "\r\n\r\n";
    $msg .= sprintf( __( 'You asked us to reset your password for your account using the email address %s.', 'personalize-login' ), $user_login ) . "\r\n\r\n";
    $msg .= __( "If this was a mistake, or you didn't ask for a password reset, just ignore this email and nothing will happen.", 'personalize-login' ) . "\r\n\r\n";
    $msg .= __( 'To reset your password, visit the following address:', 'personalize-login' ) . "\r\n\r\n";
    $msg .= site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . "\r\n\r\n";
    $msg .= __( 'Thanks!', 'personalize-login' ) . "\r\n";

    return $msg;
}

这是替换 Wordpress 重置密码电子邮件。它的功能很好,并且正在发挥作用。但是,它不是很漂亮,我想用HTML 电子邮件替换它。

有没有办法可以添加HTML 并保留打印 URL 和用户电子邮件地址的功能?例如;

<div>
  <h1>Hello</h1>
  <p>You asked us to reset your password for your account using the email address <?php PRINT USER EMAIL ?></p>
  <a href="<?php PRINT URL ?></a>
</div>

我知道以上内容非常基本,PHP 不正确,但如果我想用这个替换Plain Text 电子邮件,我该怎么做?是否可以使用此模板中的 HTML 内容和 return 内容创建一个单独的 PHP 文件?

非常感谢您的时间。

【问题讨论】:

标签: php wordpress email wordpress-login


【解决方案1】:

我的问题的解决方案分两部分完成

首先是添加到functions.php

function email_set_content_type(){
return "text/html";
}

add_filter( 'wp_mail_content_type','email_set_content_type' );

第二个添加在自定义插件中,如下所示

    $msg  = __( "<div><h1>Hello!</h1>", 'personalize-login' ) . "\r\n\r\n";
    $msg  = __( "<p>You asked us to reset your password for your account using the email address", 'personalize-login' ) . "\r\n\r\n";
    $msg .= sprintf( __( "%s.</p>", 'personalize-login' ), $user_login ) . "\r\n\r\n";
    $msg .= __( "<a href='", 'personalize-login' ) . "\r\n\r\n";
    $msg .= site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . "\r\n\r\n";
    $msg .= __( "'></a></div>", 'personalize-login' ) . "\r\n\r\n";

    return $msg;

我现在已使用此方法将所有核心 Wordpress 消息替换为整个 email 模板,包括 html bodyhead 标记。

感谢那些对我的解决方案提出意见的人。

【讨论】:

    【解决方案2】:

    是的,Darren Mathers,你可以使用类似的东西

    function replace_retrieve_password_message($message, $key, $user_login,   $user_data) {
    // Create new message
    
      $msg  = '<div><h1>Hello!, personalize-login</h1>';
      $msg .= '<p>You asked us to reset your password for your account using the email address personalize-login </p>'.$user_login;
      $msg .= "<p>If this was a mistake, or you didn't ask for a password reset, just ignore this email and nothing will happen personalize-login";
      $msg .= '<p> To reset your password, visit the following address: personalize-login';
    
      $msg .= '<p>'.site_url( "wp-login.php?action=rp&key=$key&login=".rawurlencode($user_login),'login').'</p>' 
      $msg .= '<p>Thanks! personalize-login</p> </div>';
    
      return $msg;
    
    }
    

    【讨论】:

    • 感谢您的回复。我已经尝试过了,但它破坏了插件。还有其他建议吗?
    • 您正在使用哪些插件,请在此处提及名称
    • user this in function.php add_filter('wp_mail_content_type', function() { return 'text/html'; });
    • 再次感谢您的宝贵时间。我将在下面发布我的解决方案的答案,是的,您是正确的 'wp_mail_content_type' 是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多