Testen Sie, ob sich der Schlüssel im Array user_meta befindet

Ich möchte bestimmte Benutzer mithilfe eines benutzerdefinierten Schlüssels verknüpfen, der für beide Benutzer in user_meta gespeichert ist. Es kann mehr als eins-eins-Beziehungen geben, also wird es in einem Array sein. Wenn 2 Benutzer denselben Schlüssel in diesem _mm_group_membership-Array haben, sind sie Teil der Gruppe.

Nun, da Meta-Abfrage-Abfragen auf einfache Vergleiche beschränkt sind (=, , usw.), hier ist, was ich vorschlage, Suche nach Benutzern im Zusammenhang mit $ user_id auf der Basis der Gruppenmitgliedschaft $ key:

function linked_users_array ($user_id, $key) { $group = '_mm_group_membership'; $users = get_users('meta_key='.$group.'&fields=all_with_meta'); $linked_user_ids = array(); foreach ($users as $u) { if (in_array($key, $u->$group)) { $linked_user_ids[] = $u->ID; } } return $linked_user_ids; } 

2 Fragen dazu:

1) Ist $ u -> $ Gruppe möglich? Oder muss ich etwas in der Art von var_dump( $u->get( $group ) ); ?

2) Ich möchte minimieren, die database zu treffen, also will ich nicht wirklich einen zusätzlichen get_user_meta () Aufruf für jeden Benutzer in der Schleife. Ist das möglich?

Danke im Voraus.

Solutions Collecting From Web of "Testen Sie, ob sich der Schlüssel im Array user_meta befindet"

Vor allem glaube ich, dass deine Syntax falsch ist. Sollte sein:

 $group = '_mm_group_membership'; // key should be a string 

Zweitens, hast du versucht, $u->get ? Hier ist, was der Doc sagt :

Wenn fields auf all_with_meta gesetzt ist, wird ein Array von WP_User-Objekten zurückgegeben.

Also ja, wenn Sie diesen Parameter angegeben haben, sollten Sie eine Reihe von WP_User Objekten zurückbekommen. Und ja, es sollte ein Getter in dem WP_User Objekt geben, aber Sie müssten dieselbe $group Variable füttern, um den Wert für Ihren Schlüssel zu erhalten.

 if($u->has_prop( $group )) { $meta_val = $u->get( $group ); } 

Dann arbeiten Sie mit Ihrem Wert, der, wie Sie erwähnt haben, ein Array sein sollte (von Gruppen, in denen der Benutzer ist?). Sie müssen es möglicherweise deinialisieren, da WordPress dazu neigt, Dinge als Strings in der database zu behalten.