2012-01-22 26 views
0

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

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: [email protected]'; 

     mail($admin_email, $subject, $body, $headers); 
    } 
} 

add_action('admin_init', 'restrict_admin', 1); 

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

+1

使用add_action('wp_login','restrict_admin',1) –

回答

0

您可以发送电子邮件至wp_login操作,并检查登录的用户是否具有管理员权限。我认为这是一种更符合逻辑和简单的方式去做你所需要的。

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: [email protected]'; 

if (mail($admin_email, $subject, $body, $headers)) { setcookie("sentmail", "sent"); } 

} 

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

+0

非常感谢你的魅力。 :) –

相关问题