面向用户的新帖子通知-BuddyPress

时间:2017-04-18 作者:Tesla

我正在使用下面的代码im buddypress来显示用户发布的最新帖子的通知。

https://gist.github.com/kishoresahoo/9209b9f6ac69ce21cd6962e7fe21e1b4/6b9d901383da4783f9108ffdc6aa2bb4e671cd44

问题是,当发布帖子时,只有发布帖子的人才会收到通知,而其他用户不会收到。

我想修复此错误。

谢谢你,艾哈迈德

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

就像吉滕德拉·拉纳(JitendraRana)已经提到的那样,您只需向作者发送一个通知。如果所有用户都应该收到通知,则必须遍历所有用户并向所有人添加通知。您可以使用get_users. 下面是实现它的修改代码:

function bp_post_published_notification( $post_id, $post ) {
    $author_id = $post->post_author; /* Post author ID. */
    $users = get_users();

    /* Loop all users */
    foreach( $users as $user ) {
        if ( bp_is_active( \'notifications\' ) ) {
            bp_notifications_add_notification( array(
                \'user_id\'           => $user->ID,
                \'item_id\'           => $post_id,
                \'component_name\'    => \'custom\',
                \'component_action\'  => \'custom_action\',
                \'date_notified\'     => bp_core_current_time(),
                \'is_new\'            => 1,
            ) );
        }
    }
}
add_action( \'publish_post\', \'bp_post_published_notification\', 99, 2 );

SO网友:JItendra Rana

如果您检查“publish\\u post”操作的函数。

function bp_post_published_notification( $post_id, $post ) {
    $author_id = $post->post_author; /* Post author ID. */
    if ( bp_is_active( \'notifications\' ) ) {
        bp_notifications_add_notification( array(
            \'user_id\'           => $author_id,
            \'item_id\'           => $post_id,
            \'component_name\'    => \'custom\',
            \'component_action\'  => \'custom_action\',
            \'date_notified\'     => bp_core_current_time(),
            \'is_new\'            => 1,
        ) );
    }
}
add_action( \'publish_post\', \'bp_post_published_notification\', 99, 2 );
请注意,您只向Post Author发送通知。您需要将“bp\\u notifications\\u add\\u notification”函数中的“user\\u id”参数更改为所需的用户id。

这是Codex Documentation 对于bp_notifications_add_notification 作用

<小时>EDIT :

更新函数如下:

function bp_post_published_notification( $post_id, $post ) {
    // $author_id = $post->post_author; 

    $active_users = bp_core_get_users( array("per_page"=>-1));

    foreach ( $active_users[\'users\'] as $user ) {
        if ( bp_is_active( \'notifications\' ) ) {
            bp_notifications_add_notification( array(
                \'user_id\'           => $user->ID,
                \'item_id\'           => $post_id,
                \'component_name\'    => \'custom\',
                \'component_action\'  => \'custom_action\',
                \'date_notified\'     => bp_core_current_time(),
                \'is_new\'            => 1,
            ) );
        }
    }
}
add_action( \'publish_post\', \'bp_post_published_notification\', 99, 2 );
Click here 有关的更多详细信息\'bp_core_get_users\' 作用

相关推荐

按用户‘xprofile’自定义域筛选BuddyPress用户帖子

嗨,我正在努力找出如何根据用户的个人资料字段为用户的帖子制作过滤器。。示例=用户注册表选择了2017、2018学年的下拉配置文件字段,然后他们创建了一个帖子。按毕业年份的分类筛选所有帖子。。所以你只能看到那个学年的人发的帖子。有没有人知道一个插件可以做到这一点。令人困惑的是,帖子正在加载,但会根据成员详细信息进行过滤。两个单独的目录。请提供帮助或建议