Верните всех пользователей с определенным мета-ключом


Я хотел бы использовать get_users() для возврата всех пользователей, у которых есть определенный meta_key, но я не хочу указывать, каким должно быть значение, потому что оно будет меняться для каждого пользователя. Значение представляет собой строку json. Возможно ли это?

Author: emersonthis, 2012-09-27

1 answers

Вы можете использовать только аргумент meta_key, результат будет аналогичен использованию инструкции EXISTS sql.

<?php
$users = get_users(array(
    'meta_key'     => 'your_meta_key',
));

В качестве альтернативы вы можете использовать пустую строку для meta_value (по умолчанию) и > для meta_compare. Результат тот же (вероятно, потому, что meta_value игнорируется, если он пустой!).

<?php
$users = get_users(array(
    'meta_key'     => 'your_meta_key',
    'meta_value'   => '',
    'meta_compare' => '>',
));

Первый метод работает также при использовании WP_Query и meta_query. Пример из моего плагина:

    $links = get_posts(array(
        'post_type'   => self::POST_TYPE,
        'numberposts' => apply_filters('seoal_number_links', -1),
        'meta_query'  => array(
            'relation' => 'AND',
            array(
                'key'     => self::get_key("type_{$post->post_type}"),
                'value'   => 'on',
                'compare' => '='
            ),
            array(
                'key'     => self::get_key('url'),
                'compare' => 'EXISTS' // doesn't do anything, just a reminder
            ),
            array(
                'key'     => self::get_key('keywords'),
                'compare' => 'EXISTS' // doesn't do anything, just a reminder
            )
        ),
        'suppress_filters' => false,
    ));
 9
Author: chrisguitarguy, 2012-09-27 22:52:58