我正在尝试筛选查询,以仅显示由具有管理员角色的用户发布的帖子。
我已经创建了一个pre\\u get\\u posts操作,并尝试使用$query->set只过滤类别页面中的帖子。。。
到目前为止我有这个
function remove_unvetted_authors() {
$query->set( \'role\', \'administrator\' );
}
if (is_category()) {
add_action( \'pre_get_posts\', \'remove_unvetted_authors\' );
}
但它抛出了500个错误。我知道“role”实际上不是wp\\u查询的参数,但我找不到查看用户角色的参数:/
我也试过:
function remove_unvetted_authors() {
$ids = get_users( array(\'role\' => \'administrator\' ,\'fields\' => \'ID\') );
$query->set( \'author\', \'$ids\' );
}
add_action( \'pre_get_posts\', \'remove_unvetted_authors\' );
但这也会抛出500个错误
SO网友:kero
function remove_unvetted_authors() {
$ids = get_users( array(\'role\' => \'administrator\' ,\'fields\' => \'ID\') );
$query->set( \'author\', \'$ids\' );
}
add_action( \'pre_get_posts\', \'remove_unvetted_authors\' );
这是一个正确的方向,但有一个具体的错误。
\'$ids\'
- 由于使用单引号,因此不会对变量求值。而且
get_users()
返回
array.
author
需要
int.
相反,使用author__in
(并且没有单引号)应该可以:
function remove_unvetted_authors() {
$ids = get_users( array(\'role\' => \'administrator\' ,\'fields\' => \'ID\') );
$query->set( \'author__in\', $ids );
}