如何按用户角色(数组中的2个角色)对wp_Query中的帖子进行排序

时间:2011-06-27 作者:Andrew

我正在使用此答案中的以下代码:How can I get the last posts by user role?

<?php
$friends = get_users( array( \'role\' => \'friends\' ) );
$friend_ids = array();

foreach( $friends as $friend ) 
    $friend_ids[] = $friend->ID;

$news = new WP_Query( array( \'author\' => implode( \',\', $friend_ids ), \'post_type\' => \'news\', \'paged\' => get_query_var(\'paged\') ) ); ?>
我向阵列中添加了另一个WP角色,因此它可以同时捕获这两个角色。例如:

$friends = get_users( array( \'role\' => \'friends, enemies\' ) );
现在可以按角色排序帖子了吗?因此,它首先显示所有的朋友,然后是所有的敌人等。此时,它会像预期的那样将他们全部列出。

编辑:抱歉,可能不应该再提出另一个问题,不知道我为什么这么做。是否可以在不使用自定义字段的情况下执行此操作?

我发现自定义字段存在的问题是,如果用户更改了角色(由于成员级别),则在使用新的自定义字段值保存帖子(来自更改的作者)之前,帖子将无法正确排序。

1 个回复
SO网友:Bainternet

使用难看的自定义查询是可能的,但为了节省大量时间,一个更简单的解决方案是在每个帖子中添加一个自定义字段和用户角色,然后您的查询会更加平滑,例如,如果您有一个名为“u\\u role”的自定义字段,那么您的查询应该如下所示:

$news = new WP_Query( array(
    \'author\' => implode( \',\', $friend_ids ),
    \'post_type\' => \'news\', 
    \'paged\' => get_query_var(\'paged\'),
    \'meta_key\' => \'u_role\',
    \'orderby\' => \'meta_value\', 
    \'order\' => \'DESC\') ); 

结束

相关推荐