要查询具有多个作者ID的帖子,可以使用author__in
参数这将使选定作者的帖子对当前用户可见(只读)。
add_filter(\'pre_get_posts\', \'posts_for_current_author\');
function posts_for_current_author($query) {
if (
$query->is_admin &&
\'edit.php\' === $GLOBALS[\'pagenow\'] &&
! current_user_can( \'edit_others_posts\' )
) {
$query->set(\'author__in\', array(get_current_user_id(), 1, 2, 3) ); // add 1 or more user IDs
}
return $query;
};
查询具有多个作者ID和帖子ID的帖子的一个选项是操作
where
带有的子句
posts_where
滤器我从一个
old WPSE Q&A. 这将使选定作者的帖子和选定帖子对当前用户可见(只读)。
有了这个你就可以OR
比较而不是AND
, 使用两者author__in
和post__in
在里面pre_get_posts
会导致(至少基于我在本地运行的测试)
add_filter( \'posts_where\', \'wpse_posts_where\' );
function wpse_posts_where( $where ) {
if (
is_admin() &&
\'edit.php\' === $GLOBALS[\'pagenow\'] &&
! current_user_can( \'edit_others_posts\' )
) {
remove_filter( current_filter(), __FUNCTION__ );
global $wpdb;
$current_user_id = get_current_user_id();
$authors = array(
$current_user_id,
1,
2,
3,
);
$posts = array(
1,
2,
3,
);
return str_ireplace(
"{$wpdb->posts}.post_author in ({$current_user_id})",
sprintf(
"({$wpdb->posts}.post_author in (%s) OR {$wpdb->posts}.ID in (%s))",
implode(\',\', $authors),
implode(\',\', $posts)
),
$where
);
} else {
return $where;
}
}