WordPress custom wp_users, wp_usermeta join not ordering properly

I have a custom query to pull users with their user_meta for a statistics plugin I wrote. I am able to select (WHERE) based on a date range, as well as ORDER BY any of the meta fields, however, I cannot do both at the same time. I am losing my mind!! Here is my query (with default variables for reference underneath) …

$getUserData = $wpdb->get_results("SELECT
ID, user_email, user_registered,
first_name.meta_value as first_name,
last_name.meta_value as last_name,
telephone.meta_value as telephone,
country.meta_value as country,
company.meta_value as company,
address.meta_value as address,
city.meta_value as city,
professional_title.meta_value as professional_title,
state.meta_value as state,
areas_of_interest.meta_value as areas_of_interest
FROM wp_users
LEFT JOIN wp_usermeta AS first_name ON first_name.user_id=ID
    AND first_name.meta_key='first_name'
LEFT JOIN wp_usermeta AS last_name ON last_name.user_id=ID
    AND last_name.meta_key='last_name'
LEFT JOIN wp_usermeta AS telephone ON telephone.user_id=ID
    AND telephone.meta_key='telephone'
LEFT JOIN wp_usermeta AS country ON country.user_id=ID
    AND country.meta_key='country'
LEFT JOIN wp_usermeta AS company ON company.user_id=ID
    AND company.meta_key='company'
LEFT JOIN wp_usermeta AS address ON address.user_id=ID
    AND address.meta_key='address'
LEFT JOIN wp_usermeta AS city ON city.user_id=ID
    AND city.meta_key='city'
LEFT JOIN wp_usermeta AS professional_title ON professional_title.user_id=ID
    AND professional_title.meta_key='professional_title'
LEFT JOIN wp_usermeta AS state ON state.user_id=ID
    AND state.meta_key='state'
LEFT JOIN wp_usermeta AS areas_of_interest ON areas_of_interest.user_id=ID
    AND areas_of_interest.meta_key='areas_of_interest'
" . $where . " 
ORDER BY " . $orderBy . " " . $sortOrder . " LIMIT 0, " . $page_limit);

 $where = "WHERE (user_registered >= '" . $_REQUEST['from'] . " 00:00:00' and  user_registered <= '" . $_REQUEST['to'] . " 00:00:00') ";

$orderBy = "user_registered";

$sortOrder = "ASC";

Related posts

Leave a Reply

1 comment