当WordPress中的管理面板加载时,只发送一次电子邮件


Send email only once when admin panel in WordPress is loaded

我有一个插件,每当我的管理面板加载时,它都会向我发送电子邮件。这是代码:

function restrict_admin() {
    if ( current_user_can('manage_options') ) {
        $admin_email = $wp_security_options['email'] ;
        $subject = 'WP Security ALert';
        $body = 'Hi there somebody logged into your wordpress site.';
        $headers = 'From: wpsecurity@wsoplugins.com';
        mail($admin_email, $subject, $body, $headers);
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

这段代码运行良好,但问题是每次加载管理部分的任何页面时,它都会向我发送一封电子邮件。我只想让它在管理员登录到管理面板后给我发一封电子邮件。我该怎么做?

在发送第一封电子邮件后添加一个cookie,然后检查是否设置了cookie,然后再发送另一封电子邮件。

if (!isset($_COOKIE["sentmail"])) {
$admin_email = $wp_security_options['email'] ;
$subject = 'WP Security ALert';
$body = 'Hi there somebody logged into your wordpress site.';
$headers = 'From: wpsecurity@wsoplugins.com';
if (mail($admin_email, $subject, $body, $headers)) { setcookie("sentmail", "sent"); }
}

这是一个会话cookie。。。因此,当您关闭浏览器时,它将被删除。如果您想要一封来自同一客户端的多次登录电子邮件,您可能需要在注销时将其删除。

您可以改为在wp_login操作中发送电子邮件,并检查登录用户是否具有管理员权限。我认为这是一种更合乎逻辑、更简单的方式来做你需要的事情。