我不完全确定问题是什么,因为您已经提到了解决问题所需的所有工具。。。
仅使用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\' );