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

时间:2012-01-22 12:51:48

标签: php wordpress plugins

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

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 );

此代码工作正常,但问题是每次加载管理部分中的任何页面时它都会向我发送一封电子邮件。当管理员登录管理仪表板时,我只想让它发送一次电子邮件。我该怎么做?

2 个答案:

答案 0 :(得分: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 ...因此当您关闭浏览器时它将被删除。如果您希望从同一客户端发送多个登录的电子邮件,则可能需要在注销时删除它。

答案 1 :(得分:0)

您可以通过wp_login操作发送电子邮件,并检查登录用户是否具有管理员权限。我认为这是一种更合乎逻辑,更简单的方式来满足您的需求。