我想输出一份指南列表,每位指南都有投票和评分。所以我想通过评级和投票来对指南列表进行排序。


示例:


 指南名称评级投票
指南1 10 3
指南2 10 2
指南3 10 1
指南4 9 6
指南5 9 2


&#xA ; 所以我必须通过2个meta_key订购指南


 omvp_vote_rating和omvp_total_vote

&# xA;
 我已经尝试了很多方法让它工作,但还没有得到它。有一种方法我几乎可以使用它,但问题是我无法通过meta_key对它进行排序,我只能通过普通字段来命令它,如 comment_count,modified,date,rand(random),title ...

所以这是我的代码
$ args = array(
'post_type'=>'指南',
'meta_key'=>'omvp_vote_rating',
'post_status'=>'发布',
'posts_per_page'=> 20,
'meta_query' =>数组(
数组(
'key'=>'omvp_vote_rating',
'compare'=>'> =',
'value'=> ; 0
),
数组(
'key'=>'omvp_total_vote',
'compare'=>'> =',
'value' => 0
),
),
'orderby'=>数组(
'title'=>'ASC',//< - 这是工作&# xA;'omvp_total_vote'=>'DESC'//&l t; - 这不起作用
 ),
 );
 $ wp_query = new WP_Query($ args);



答案 0 :(得分:2)
您可以通过自定义选择查询来执行此操作。
$query = "SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta AS rating ON(
$wpdb->posts.ID = rating.post_id
AND rating.meta_key = 'omvp_vote_rating'
)
LEFT JOIN $wpdb->postmeta AS vote ON(
$wpdb->posts.ID = vote.post_id
AND vote.meta_key = 'omvp_total_vote'
)
WHERE $wpdb->term_taxonomy.term_id = 3
AND $wpdb->posts.post_status = 'publish'
ORDER BY rating.meta_value, vote.meta_value ASC LIMIT 0,20"
$posts = $wpdb->get_results($query, object);
答案 1 :(得分:0)
这是可能的。
试试这个:
'order' => 'DESC',
'orderby' => 'omvp_vote_rating omvp_total_vote'
这将根据 omvp_vote_rating 和 omvp_total_vote 按降序对所有指南进行排序。
有关详情,请参阅wp_query中的order
和orderby
参数。