2012-01-22 39 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

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

相關問題