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
*/