Custom query to show posts

时间:2013-06-22 作者:Iulian Bozeanu

我正在尝试根据评级(使用wp postrating插件)和评论数对帖子进行排序。我已经使用wpdb实现了这一点,但我有点希望使其更容易,并将其用于wp\\U查询。似乎我找不到任何方法来实现这一点,因为我不知道在$args中按两个项目排序的任何方法。

我的wpdb代码如下所示。。。

$wpdb->get_results("SELECT wp_postmeta.meta_value, id, post_title, comment_count FROM wp_posts INNER JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.id WHERE post_type=\'post\' AND wp_postmeta.meta_key=\'ratings_average\' ORDER BY wp_postmeta.meta_value DESC, comment_count DESC");

有什么想法吗?

2 个回复
SO网友:ksr89

你可以用wp_query

$args = array(  \'post_type\'     => \'post\',
                \'numberposts\'   => -1,
                \'posts_per_page\'=> -1,
                \'orderby\'       => \'meta_value_num\',
                \'meta_key\'      => \'ratings_average\',
                \'order\'         => \'DESC\',
            );
$posts = new WP_Query($args);
现在的结果是DESC Order.

SO网友:Krzysiek Dróżdż

首先,您可以在中使用多个字段orderby 论点法典shows you 如何操作:

$query = new WP_Query( array( \'post_type\' => \'page\', \'orderby\' => \'title menu_order\', \'order\' => \'ASC\' ) );
它应该能解决你的问题。(应该这样做,但如果您想对DESC进行排序,可能不会,因为WordPress存在以下错误:http://core.trac.wordpress.org/ticket/17065)

当然你总是可以使用posts_orderby 筛选以创建自己的ORDER BY 查询的一部分。

function my_posts_orderby($orderby_statement) {
    $orderby_statement = "YOUR ORDER BY STATEMENT";
    return $orderby_statement;
}
add_filter(\'posts_orderby\', \'my_posts_orderby\');
只需在调用查询之前添加此筛选器,然后将其删除即可。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post