web-dev-qa-db-fra.com

Renvoie tous les utilisateurs avec une clé méta spécifique

J'aimerais utiliser get_users() pour renvoyer tous les utilisateurs qui ont une méta_key particulière, mais je ne veux pas spécifier quelle doit être la valeur, car elle changera pour chaque utilisateur. La valeur est une chaîne json. Est-ce possible?

5
emersonthis

Vous pouvez utiliser uniquement l'argument meta_key, le résultat sera similaire à l'utilisation de l'instruction EXISTS sql.

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

Vous pouvez également utiliser une chaîne vide pour meta_value (valeur par défaut) et > pour meta_compare. Le résultat est le même (probablement parce que meta_value est ignoré s'il est vide!).

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

La première méthode fonctionne également avec WP_Query et meta_query. Exemple d'un de mes plugins:

    $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,
    ));
8
chrisguitarguy