按过帐元值排序查询

时间:2012-10-14 作者:Marco

      //Displaying latest post per author on front page
  function filter_where($where = \'\') {
    global $wpdb;
    $where .= " AND vipwp_posts.id = (select id from {$wpdb->prefix}posts p2 where p2.post_status = \'publish\' and p2.post_author = {$wpdb->prefix}posts.post_author order by p2.post_date desc limit 0,1)";
    return $where;
  }
  add_filter(\'posts_where\', \'filter_where\'); 
我想修改上面的代码:是否可以通过meta\\u值从date更改记录的顺序?

示例:更改

order by p2.post_date

meta_key=\'name_key\' ORDER BY meta_value
谢谢,但如果我删除post\\u,其中不显示每个作者的最新帖子

2 个回复
SO网友:Michael

看看WordPress Codex:http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_orderby

function edit_posts_orderby($orderby_statement) {
    $orderby_statement = "meta_value DESC";
    return $orderby_statement;
} add_filter(\'posts_orderby\', \'edit_posts_orderby\');
如果您自己进行WP\\U查询,可以更改orderby 参数到meta_value

请看这里:http://codex.wordpress.org/Class_Reference/WP_Query

SO网友:helgatheviking

我想你完全可以从pre_get_posts 行动因此,请尝试删除posts_where 过滤器并替换为:

function wpa_69199( $query ) {
        set_query_var( \'orderby\', \'meta_value\' );
        set_query_var( \'meta_key\', \'name_key\' ); //field you\'d like to order by
}
add_action( \'pre_get_posts\', \'wpa_69199\' );
注意:这里没有条件逻辑,所有的帖子都将按这种方式排序。

结束

相关推荐

为什么我的WP_QUERY两次输出我的条目?

我正在使用一个小的快捷码输出一个按几十年排列的电影标题列表。decades 是我的自定义分类法,术语如下1930s 1940s 等以下是我的短代码:[fashionfilms type=fashionfilms tax=decades] 下面是如何解析该短代码:add_shortcode(\'fashionfilms\', \'cw_output_fashion_films\'); function cw_output_fashion_films($atts){ &#