排除当前用户电子邮件并发送通知

时间:2015-08-03 作者:pradeepkumar1565

我目前正在构建一个wordpress插件,用于向对帖子发表评论的用户角色列表发送电子邮件通知。

For Example:

如果具有“subscriber”角色的用户对帖子发表评论,则具有“subscriber”角色的所有其他用户都会收到电子邮件警报。目前,我已经通过以下代码实现了这一点

if( current_user_can(\'subscriber\'))
{
$user_query = new WP_User_Query( array( \'role\' => \'subscriber\');
                foreach ( $user_query->results as $user ) 
                {
                    $mail=$user->user_email;


                    $subject  ="this is example";
                    $message  = "";
                    $message .= "$post_permalink\\n";

                    wp_mail($user->user_email,  $subject,$message);         
}
}
上述代码将向所有具有“订阅者”角色的用户发送电子邮件。

Output:

它甚至可以获得对帖子发表评论并发送电子邮件通知的当前用户。

Problem to be solved:

如何排除当前用户的电子邮件并仅向具有“订阅者”角色的其他用户发送通知。

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

首先,你应该知道current_user_can() 只接受功能,不接受角色,因此您使用它是错误的,最终可能会得到意外的结果。

也就是说,排除用户形式WP_User_Query 您可以使用exclude parameter:

// Get current user data
$user = wp_get_current_user();

// Check if current user is a subscriber
if( ! empty( $user ) && in_array( "subscriber", (array) $user->roles ) ) {

    $user_query = new WP_User_Query( array(
                                           \'role\'   => \'subscriber\',
                                           // exlude current user
                                           \'exclude\' => array( $user->ID ),
                                     )
    );

    $subscribers = $user_query->get_results();

    if( ! empty( $subscribers ) ) {
        foreach ( $subscribers as $user )  {

            $mail = $user->user_email;
            $subject  ="this is example";
            $message  = "";
            $message .= "$post_permalink\\n";

            wp_mail( $mail, $subject, $message);

        }
    }

}

SO网友:Domain

以下内容适用于您:-

 if( current_user_can(\'read\')) { 
    $exclude_user = array();
    $exclude_user[] =get_current_user_id();
    $args = array(
    \'role\' => \'subscriber\',
    \'exclude\' => $exclude_user
    );
    $user_query = new WP_User_Query( $args); 
    foreach ( $user_query->results as $user ) { $mail=$user->user_email;

                    $subject  ="this is example";
                    $message  = "";
                    $message .= "$post_permalink\\n";

                    wp_mail($user->user_email,  $subject,$message);         
    }


}

结束

相关推荐

"Reply-to Address" Email

我在过去几天的网络上搜索了;回复地址“;但运气不好,所以,我来了。在我的wordpress网站上,有多个店主可以销售他们的产品。当访问者购买某个物品(由不同的所有者列出)时,该特定所有者会收到一封电子邮件通知(请注意,在结账过程中必须输入访问者的电子邮件地址)然而,电子邮件来自;“管理”;电子邮件帐户。我搜索了如何设置“;“回复”;地址,以便所有者可以直接回复客户的电子邮件地址,而不是管理员帐户。下面是我看到的一个我正在努力实现的示例:在此图像中,该站点为abc.ca 以及[email protected]