Я занимаюсь этой проблемой уже несколько часов, и, пожалуйста, спасите меня, прежде чем я go сумасшедший .....
Я пытаюсь использовать Wordpress 'WP_User_Query для извлечения пользователей из БД
Я передаю его с такими аргументами, и он отлично работает ...:
function getSomeUsers ($year, $month, $day)
{
$arg = [
'meta_key' => 'some_meta_key',
'meta_value' => 'some_meta_value',
'date_query' => [
[
'year' => $year,
'month' => $month,
'day' => $day
]
]
];
$user_query = new WP_User_Query( $arg );
return $user_query;
}
Но когда я пытаюсь использовать мета-запрос, он возвращает всех пользователей в БД и не только те, которые соответствуют запросу ....
function getSomeUsers ()
{
$arg = [
'meta_query' => [
[
'key' => 'some_meta_key',
'value' => 'some_meta_value',
'compare' => '='
]
]
] ;
$user_query = new WP_User_Query( $arg );
return $user_query;
}
Кто-нибудь знает, что не так?
edit: я пробовал мета-запрос на другом простом WordPress-сайте, и это работает там, так что должно быть что-то еще, вмешиваясь в запрос ..
Я занимался копанием с плагином Query Monitor ... Я думал, что это могло быть потому, что я также вмешивался в pre_user_query, но я вижу, что у меня нет каких-либо действий, связанных с этим хуком ... так что нвм ...
но я вижу, что запрос вызывается. Вот как это выглядит, и, как и предполагалось, мета-ключи в мета-запросе не включены:
SELECT DISTINCT SQL_CALC_FOUND_ROWS wp_users.*
FROM wp_users
LEFT JOIN wp_usermeta
ON (wp_users.ID = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'ur_user_status' )
LEFT JOIN wp_usermeta AS mt1
ON ( wp_users.ID = mt1.user_id )
LEFT JOIN wp_usermeta AS mt2
ON ( wp_users.ID = mt2.user_id )
WHERE 1=1
AND ( ( ( wp_usermeta.user_id IS NULL
OR ( mt1.meta_key = 'ur_user_status'
AND mt1.meta_value = '1' ) )
AND ( mt2.meta_key = 'wp_3_capabilities' ) ) )
ORDER BY user_login AS
Он включает в себя некоторые странные метаданные пользователя, которые, похоже, добавляются плагином User Registration.
Я деактивировал плагин, и теперь мета-запрос работает .... да