mehrshaddarzi
10/1/2018 - 9:14 AM

pre_user_query for change sql user

pre_user_query for change sql user

<?php

add_action('pre_user_query', array($this, 'get_query_user'));
$user_query = new WP_User_Query(array('meta_key' => 'mobile', 'meta_value' => '', 'meta_compare' => '!=', 'role' => $key_item, 'fields' => 'all'));
echo $user_query->request;
echo '<br>';
print_r($user_query);
print_r($user_query->get_results());
//get_users( array('meta_key' => 'mobile', 'meta_value'   => '', 'meta_compare' => '!=', 'role' => $key_item, 'fields' => 'all'))
echo '<br>';
remove_action('pre_user_query', array($this, 'get_query_user'));

    /**
     * Custom Query for Get All User Mobile in special Role
     *
     * @param  Not param
     */
    public function get_query_user($user_query){
        global $wpdb;
        $user_query->query_fields .= ', m1.meta_value AS mobile ';  // additional fields
        $user_query->query_from .= " JOIN {$wpdb->usermeta} m1 ON (m1.user_id = {$wpdb->users}.ID AND m1.meta_key = 'mobile') "; // additional joins here
        //$user_query->query_where .= ' AND field=\'value\' '; // additional where clauses
       // $user_query->query_orderby .= ' ORDER BY my_custom_field '; // additional sorting
        //$user_query->query_limit .= ''; // if you need to adjust paging

        return $user_query;
    }

/*
SELECT
    u1.id,
    u1.login,
    u1.password,
    u1.email,
    m1.meta_value AS firstname,
    m2.meta_value AS lastname,
    m3.meta_value AS country
FROM wp_users u1
JOIN wp_usermeta m1 ON (m1.user_id = u1.id AND m1.meta_key = 'first_name')
JOIN wp_usermeta m2 ON (m2.user_id = u1.id AND m2.meta_key = 'last_name')
JOIN wp_usermeta m3 ON (m3.user_id = u1.id AND m3.meta_key = 'country')
WHERE
    -- CONDITIONS ON the user you want to select based any field
    */