首页 > 解决方案 > WordPress WP_User_Query

问题描述

如何user按 2 个元字段显示和排序它们?例如我有用户查询

$args = array(
        'role'                => 'specialist',
        'meta_key'            => 'proffession',
        'meta_value'          => $term->ID,
        'meta_compare'        => '=',
        'number'              => 20,
        'paged'               => $paged,
    );
$user_query = new WP_User_Query($args);

我想通过两个元值对这个查询进行排序,例如在 PHP 中:

 if(get_usermeta( $user_id, $meta_key = 'be_first' )>time() AND get_usermeta( $user_id, $meta_key = 'pro_date' )>time())
    // show this users first  ordered by be_first DESC, ordered by pro_date
if($pro_date>time()){
    //show this users second ordered by pro_date desc
}
    //show all other users

标签: phpsqlwordpress

解决方案


你可以试试这个...我没有你的字段,所以这个没有经过测试。您可以创建一个meta_querywhere 您的子句设置为比较,exists然后使用这些来 orderby。

$args = array(
        'role'              => 'specialist',
        'number'            => 20,
        'paged'             => $paged,
        'meta_query'        => array (
            'relation' => 'AND',
            array(
                'key'     => 'profession',
                'value'   => '$term->ID',
                'compare' => '=',
            ),
            'be_first_clause' => array(
                'key'     => 'be_first',
                'compare' => 'EXISTS',
            ),
            'pro_date_clause' => array(
                'key'     => 'pro_date',
                'compare' => 'EXISTS',
            ),
        ),
        'orderby' => array(
            'be_first_clause' => 'ASC',
            'pro_date_clause' => 'ASC'
        )
    );
$user_query = new WP_User_Query($args);

推荐阅读