Find us on Facebook

LightBlog
Responsive Ads Here

Thứ Sáu, 29 tháng 12, 2017

Get all wp_users sort by metakey

Question:

I am trying to get users list sort by metakey. I mean i have set meta key user_last_login. some users doesnot have this meta key. some users have it.
I want to get both users in single query but if metakey exists those will come first and remaining should come last.
Here is my query
$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 );
Please help.

Answer:

You can index each of the arrays and then orderby 1 or both of them using ASC,DESC as per your requirement
    $meta_query_args = array(
        'relation' => 'OR', // Optional, defaults to "AND"
        'no_login' =>array(
        'key'     => 'user_last_login',                 
        'compare' => 'Not Exists'
        ),
        'login' => 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'           => array(
            'login'         => 'ASC'
        ),                   
            'exclude' => array(get_current_user_id()), 

            'meta_query'  =>$meta_query
        );

        $users = get_users( $args );

Không có nhận xét nào:

Đăng nhận xét