你可以做的一件事就是过滤$email_to 如果收件人已登录,则返回空字符串。这边wp_mail() 将无法发送消息并返回false。将以下内容添加到主题functions.php 或至bp-custom.php 文件:
add_filter(\'messages_notification_new_message_to\', \'disable_loggedin_email_notification\');
function disable_loggedin_email_notification($email_to) {
$user = get_user_by(\'email\',$email_to);
if (bp_has_members("type=online&include=$user->ID")) {
$email_to = \'\';
}
return $email_to;
}
EDIT: 对于您使用的插件,一个可能的解决方案是让所有拥有该电子邮件的用户通过将该列表传递给
bp_has_members() 功能:
add_filter(\'messages_notification_new_message_to\', \'disable_loggedin_email_notification\');
function disable_loggedin_email_notification($email_to) {
$users = get_users(array(
\'search\' => $email_to
));
$ids = array();
foreach ($users as $user) {
$ids[] = $user->ID;
}
$ids = implode(\',\', $ids);
if (bp_has_members("type=online&include=$ids")) {
$email_to = \'\';
}
return $email_to;
}