【问题标题】:Get all wp_users sort by metakey获取所有 wp_users 按元键排序
【发布时间】:2017-12-08 20:53:17
【问题描述】:

我正在尝试按元键排序用户列表。我的意思是我已经设置了元密钥 user_last_login。某些用户没有此元密钥。有些用户有它。

我想在单个查询中同时获取两个用户,但如果元键存在,那么它们将首先出现,其余的应该最后出现。

这是我的查询

$meta_query_args = array(
            'relation' => 'OR', // Optional, defaults to "AND"
            array(
            'key'     => 'user_last_login',                 
            'compare' => 'Not Exists'
            ),
            array(
            'key'     => 'user_last_login',                 
            'compare' => 'Exists'
            )
        );
        $meta_query = new WP_Meta_Query( $meta_query_args );


            $args = array(
                'offset' => $paged ? ($paged - 1) * $number : 0,
                'number' => $number,
                'fields' => 'all',
                'orderby'=>'user_last_login',                   
                'exclude' => array(get_current_user_id()), 

                'meta_query'  =>$meta_query
            );

            $users = get_users( $args );

请帮忙。

【问题讨论】:

    标签: wordpress sql-order-by meta-key


    【解决方案1】:

    当您想通过meta_value 订购时,需要meta_key 参数。这是修改后的代码,

    $query_args = array(
        'relation' => 'OR',
        array(
            'key'     => 'user_last_login',                 
            'compare' => 'NOT EXISTS'
        ),
        array(
            'key'     => 'user_last_login',                 
            'compare' => 'EXISTS'
        )
    );
    
    $meta_query = new WP_Meta_Query($query_args);
    
    $args = array(
        'offset' => $paged ? ($paged - 1) * $number : 0,
        'number' => $number,
        'fields' => 'all',
        'meta_key' => 'user_last_login',
        'orderby' => 'meta_value',
        'order' => 'ASC',                 
        'exclude' => array(get_current_user_id()), 
        'meta_query' => $meta_query
    );
    
    $users = get_users( $args );
    

    希望这篇文章有所帮助。

    【讨论】:

    • 它只返回拥有元密钥的人。我有 20 个用户。 3 个用户在数据库中有那个元数据。所以我只有 3 个用户使用上述查询。剩下的 17 个用户没有那个元键。
    • 那你为什么要指定元查询,只需删除 meta_query 部分就可以了。
    • 是的,谢谢。它现在工作。现在我可以正确获取列表了。
    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2015-06-21
    • 1970-01-01
    • 2013-01-31
    相关资源
    最近更新 更多