meta_query в WP_User_Query не работает - возвращает каждого пользователя, а не только пользователей, которым соответствуют ключ и значение - PullRequest
0 голосов
/ 01 марта 2020

Я занимаюсь этой проблемой уже несколько часов, и, пожалуйста, спасите меня, прежде чем я 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.

Я деактивировал плагин, и теперь мета-запрос работает .... да

1 Ответ

0 голосов
/ 03 марта 2020

Я пробовал мета-запрос на другом простом WordPress-сайте, и он работает там, так что должно быть что-то еще, вмешиваясь в запрос ..

Я немного покопался с плагин Query Monitor ... Я думал, что это могло быть из-за того, что я также вмешивался в pre_user_query, но я вижу, что у меня нет никаких действий, связанных с этим хуком ... так что nvm, что ...

но я вижу, что запрос вызывается. Вот как это выглядит, и, как и предполагалось, мета-ключи в мета-запросе не включены:

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

Он включает в себя некоторые странные метаданные пользователя, которые, похоже, добавляются плагином «Регистрация пользователей».

Я деактивировал плагин, и теперь мета-запрос работает .... да

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...