it-swarm.com.de

Kann ich die Anzahl der Benutzer zählen, die einem Wert in einem Schlüssel mit mehreren Werten entsprechen?

Ich versuche, die Anzahl der Benutzer mit einem bestimmten Wert in einem benutzerdefinierten Feld zu finden. Das Problem ist, dass dieses benutzerdefinierte Feld mehrere Werte zulässt. Dieser Code funktioniert gut, wenn der meta_key nur einen Wert zulässt, aber wie kann ich dafür sorgen, dass er mit mehreren Werten funktioniert?

$args = array('meta_key' => 'fruits_user_like', 'meta_value' =>'Apple');
$users = get_users($args);
$number_of_users = count($users);
5
Fraser

Wenn Sie mit serialisierten Daten als meta_value arbeiten, ist das nicht gut, wie Pieter vorgeschlagen hat.

Wenn es jedoch keine Möglichkeit gibt, das Serialisierungsproblem zu umgehen, frage ich mich, ob ein meta_query, der einen compare-Wert von LIKE verwendet, hilfreich sein könnte ...

Beispiel:

//psuedo serialized data... (e.g. value of meta_key = fruits_user_like)
//a:4:{i:0;s:5:"Apple";i:1;s:6:"orange";i:2;s:6:"banana";i:3;s:31:"serialized_data_sucks_sometimes";}

$users = get_users(   
    array(   
        'meta_query' => array(  
            array(  
                'key'   => 'fruits_user_like',
                'value' => array(
                    'Apple', 
                    'orange', 
                    'banana', 
                    'serialized_data_sucks_sometimes'
                ),
                'compare' => 'LIKE'
            )
        )    
    )    
);

...Ich wundere mich.

Das Obige funktioniert nicht mit einem compare-Wert von LIKE, wir müssen REGEXP verwenden und einen regulären Ausdruck als Wert übergeben.

Versuche Folgendes:

$args = array(   
    'meta_query' => array(
        array(    
            'key'   => 'fruits_user_like',
            'value' => '(Apple|orange|banana)',
            'compare' => 'REGEXP'
        )
    ),
    'count_total' => true
);

$users = new WP_User_Query($args);

print_r( $users->get_total() );

Wechseln Sie zuWP_User_Query. In diesem Fall ist es passender, da wir einen count_total-Parameter übergeben und dann die Methode WP_User_Query::get_total() aufrufen können.

2
userabuser