WordPress子比主题设置用户登录邮件提醒功能教程

WordPress子比主题设置用户登录邮件提醒功能教程

AI 智能摘要
对于只想实现简单、精准的登录提醒的用户来说,一段小巧的代码就能完美解决问题。主题铺今天就为大家带来一个实用的WordPress代码片段,让你在用户(包括你自己)登录网站时,自动发送一封邮件提醒,有效增强账户安全性!这里以WordPress子比主题为例,其他WordPress主题都可以。

在WordPress网站运营中,账户安全是重中之重。虽然子比主题本身可能不提供用户登录邮件提醒功能,市面上也有一些功能庞杂的插件,但对于只想实现简单、精准的登录提醒的用户来说,一段小巧的代码就能完美解决问题。主题铺今天就为大家带来一个实用的WordPress代码片段,让你在用户(包括你自己)登录网站时,自动发送一封邮件提醒,有效增强账户安全性!这里以WordPress子比主题为例,其他WordPress主题都可以。

为什么需要用户登录邮件提醒?

当你的WordPress账户在某个设备或IP地址登录时,如果能及时收到邮件通知,你就可以:

  • 及时发现异常登录:如果不是你本人操作,可以立即意识到账户可能被盗用,并采取修改密码等措施。
  • 掌握登录动态:了解账户的登录时间和地点,方便进行安全审计。
  • 增强安全感:即使是正常登录,收到提醒也能让你对账户状态更放心。

实现原理

WordPress在用户成功登录时会触发一个名为 wp_login 的动作钩子。我们可以利用这个钩子,在用户登录后执行自定义函数。在这个自定义函数中,我们将获取登录用户的邮箱、登录时间、IP地址和设备信息(User-Agent),然后通过WordPress内置的 wp_mail() 函数发送一封格式化的HTML邮件给该用户。

代码片段解析

让我们先来看看这段精妙的代码:

/**
 * 用户登陆邮件提醒
 * 主题铺www.zhutipu.com编写
 */
function notify_all_user_login($user_login, $user) {
    // 设置时区,确保邮件中的时间是正确的本地时间
    date_default_timezone_set('PRC'); 

    // 获取用户邮箱
    $user_email = $user->user_email;

    // 邮件主题:包含网站名称,清晰明了
    $subject = '您的账户登录提醒 - ' . get_option("blogname");

    // 邮件内容:HTML格式,包含登录账户、时间、IP和设备信息
    $message = '<p>您好!您的账户(' . $user_login . ')已成功登录:</p>' .
               "<p>登录时间:" . date("Y-m-d H:i:s") . "</p>" .
               "<p>登录IP:" . $_SERVER['REMOTE_ADDR'] . "</p>" .
               "<p>设备信息:" . $_SERVER['HTTP_USER_AGENT'] . "</p>";

    // 构建邮件发件人头部,使用网站域名作为发件人地址
    $domain = preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // 移除www前缀,获取纯域名
    $headers = array(
        'Content-Type: text/html; charset=' . get_option('blog_charset'), // 设置邮件内容为HTML格式及字符集
        'From: 系统通知 <no-reply@' . $domain . '>' // 设置发件人名称和邮箱
    );

    // 发送邮件
    wp_mail($user_email, $subject, $message, $headers);
}

// 将函数挂载到wp_login动作钩子,优先级10,接受2个参数
add_action('wp_login', 'notify_all_user_login', 10, 2);

主题铺点评: 这段代码设计得非常巧妙和实用。它自动获取了登录用户的关键信息,并通过WordPress内置的邮件发送机制,以HTML格式发送邮件。特别是 From: 系统通知 <no-reply@' . $domain . '> 的设置,让邮件看起来更专业,且避免了因发件人邮箱不存在而导致的问题。

如何将代码添加到你的WordPress网站

将这段代码添加到你的WordPress网站有几种方式,主题铺推荐以下两种:

方法一:推荐 – 使用代码片段(Code Snippets)插件

这是最安全、最推荐的方式,因为它不会直接修改主题文件,避免了主题更新时代码被覆盖的风险。

  1. 安装并激活插件
    • 登录WordPress后台。
    • 导航到 “插件” > “安装插件”
    • 在搜索框中输入“Code Snippets”,找到并安装该插件。
    • 安装完成后,点击“启用”。
  2. 添加新代码片段
    • 在左侧菜单栏中,导航到 “代码片段” > “添加新”
    • 在“标题”处填写一个描述性的名称,例如“用户登录邮件提醒”。
    • 将上面提供的完整PHP代码(从 /** 开始到 add_action 结束)粘贴到代码框中。
    • 确保“运行代码片段”选项设置为“在网站前端和管理区域运行”。
    • 点击右下角的 “保存更改并激活” 按钮。

方法二:备用 – 添加到主题的 functions.php 文件

如果你不想安装额外插件,可以直接将代码添加到主题的 functions.php 文件中。

  1. 登录WordPress后台
  2. 导航到“外观” > “主题文件编辑器” (或“主题编辑器”)。
  3. 在右侧文件列表中,找到并点击 functions.php 文件。
  4. 将上面提供的完整PHP代码(从 /** 开始到 add_action 结束)粘贴到 functions.php 文件的末尾,在 ?> 之前(如果存在的话)。
  5. 点击“更新文件”或“保存更改”按钮。

强烈建议: 如果你选择此方法,最好使用子主题。直接修改父主题的 functions.php 会在主题更新时丢失你的自定义代码。如果是WordPress子比主题,则无需修改 functions.php 文件,只用修改 func.php 文件即可。

测试你的登录邮件提醒功能

代码添加并保存后,清除你的网站缓存(如果使用了缓存插件),然后进行测试:

  1. 打开一个隐身/无痕浏览器窗口(或注销当前登录账户)。
  2. 尝试登录你的WordPress网站
  3. 检查你的邮箱:登录成功后,你应该会立即收到一封主题为“您的账户登录提醒 – [你的网站名称]”的邮件。检查邮件内容是否包含正确的登录时间、IP地址和设备信息。

扩展建议

  • SMTP配置:确保你的WordPress网站能够正常发送邮件。如果你的网站邮件发送不稳定或经常进入垃圾邮件,主题铺建议安装一个SMTP插件(如WP Mail SMTP),并配置使用专业的SMTP服务(如SendGrid, Mailgun, 腾讯企业邮等),以提高邮件送达率。
  • 排除特定用户:如果你不希望某些用户(例如管理员)收到登录提醒,可以在 notify_all_user_login 函数内部添加条件判断,根据 user->IDuser->roles 进行排除。
  • 邮件内容定制:你可以根据自己的需求,进一步美化邮件的HTML内容,添加更多个性化的信息,例如网站Logo、安全建议链接等。
  • IP地理位置查询:更高级的实现可以集成IP地理位置查询API,在邮件中显示登录IP的地理位置信息,进一步提升安全预警的准确性。

通过这段简洁而强大的代码,你的WordPress网站账户安全将得到有效提升。主题铺认为,这种自定义功能的实现,既满足了特定需求,又避免了不必要的插件臃肿,是WordPress开发中值得学习的范例。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容