如何排除当前用户的帖子

时间:2018-12-26 作者:Alex

如何在中隐藏ID数组中的帖子usermeta 对于中的当前用户main query.

我可以使用post__not_in 在里面meta_query 但我不知道只针对特定用户使用哪个选项。

我想应该用posts_where?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我不完全确定问题是什么,因为您已经提到了解决问题所需的所有工具。。。

仅使用pre_get_posts 过滤,检查用户是否登录,获取他不应该看到的帖子的ID,并在查询中排除这些帖子:

function remove_some_posts_for_user( $query ) {
    if ( ! is_admin() && is_user_logged_in() && $query->is_main_query() ) {
        $posts_to_remove_for_current_user = get_user_meta( get_current_user_id(), \'posts_to_remove\', true );
        if ( ! empty($posts_to_remove_for_current_user) is_array($posts_to_remove_for_current_user) ) {
            $query->set( \'post__not_in\', $posts_to_remove_for_current_user );
        }
    }
} 
add_action( \'pre_get_posts\', \'remove_some_posts_for_user\' );

相关推荐

WP_QUERY显示除类别X以外的所有帖子,除非它也在Y类别中

我想展示A、B、C、D类的帖子。。。和Y,除了X,除非X中的帖子也在Y中,然后将它们与其余的一起显示。我可以很简单地隐藏类别X:$args = array( \'post_type\' => \'post\', \'posts_per_page\' => 15, \'paged\' => $paged, \'cat\' => \'-X\', ); 我试过了combine two loops, 一个获取