WP_Query按usermeta值排序

时间:2016-11-15 09:09:52

标签: wordpress left-join

我有一个正常运行的WP_Query,但是我现在需要修改它以按usermeta中的值排序(在这种情况下,用户有一个meta_key" jobs_order')。这是一个数值,这个想法是我根据这个命令发布帖子,例如,值为0的用户将在下一个拥有1的用户之前看到他们的帖子。

我已经如此迷恋它:

add_filter('posts_join', 'wpa_66507_join');

function wpa_66507_join( $join ) {
    if ( is_page('browse-jobs') && is_main_query() )  {

        global $wpdb;

        // join the usermeta table so we can sort by meta key
        $join .= " LEFT JOIN {$wpdb->usermeta} AS um ON ( um.user_id = {$wpdb->posts}.post_author AND um.meta_key = 'jobs_order' )";
    }
    return $join;
}

并且WP_Query被设置为order by um.meta_value_num ASC。但是这不起作用,无论我是否注释掉加入声明,帖子都保持相同的顺序。对此有任何想法都非常感激。

1 个答案:

答案 0 :(得分:0)

$args = array(
    'post_type'  => 'my_custom_post_type',
    'meta_key'   => 'age',
    'orderby'    => 'meta_value_num',
    'order'      => 'ASC',
    'meta_query' => array(
        array(
            'key'     => 'age',
            'value'   => array( 3, 4 ),
            'compare' => 'IN',
        ),
    ),
);
$query = new WP_Query( $args );