Wie entferne ich doppelte Benutzer von zwei zusammengeführten WP_User_Query-Objekten?

Ich versuche, eine Suche zu schreiben, die mehrere benutzerdefinierte Benutzermetafelder verwendet, die ich erstellt habe, aber es war schwierig, sie zu implementieren. Im Grunde hatte ich das gleiche Problem, das dieser Typ hatte, und ich triggerse es ähnlich.

$exclude = array( '1' ); $args1 = array( 'exclude' => $exclude, 'search' => '*' . $search_query . '*', 'search_columns' => array( 'user_login', 'user_nicename', 'user_email', 'user_url', ), ); $args2 = array( 'exclude' => $exclude, 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'first_name', 'value' => $search_query, 'compare' => 'LIKE' ), array( 'key' => 'last_name', 'value' => $search_query, 'compare' => 'LIKE' ), array( 'key' => 'nickname', 'value' => $search_query, 'compare' => 'LIKE' ), ), ); // queries $search_query = new WP_User_Query( $args1 ); $meta_query = new WP_User_Query( $args2 ); $user_query = new WP_User_Query(); $user_query->results = array_merge( $search_query->results, $meta_query->results ); //populate total_users count for the loop to work correctly $user_query->total_users = $search_query->total_users + $meta_query->total_users; // Remove duplicate users from array /* final step goes here */ 

Wenn sich die Suchbegriffe jedoch mit den Benutzern, die sie gemeinsam haben, überschneiden, geben die Abfragen manchmal das gleiche Ergebnis zweimal zurück. Gibt es eine Möglichkeit, nach Duplikaten zu suchen?

Edit : So habe ich das Problem getriggers.

  if (!empty($search_query->results)) { foreach ($search_query->results as $user) { $user_info = $user->ID; array_push($exclude, $user_info); } } 

Solutions Collecting From Web of "Wie entferne ich doppelte Benutzer von zwei zusammengeführten WP_User_Query-Objekten?"

Speichern Sie die in der ersten Abfrage gefundenen Benutzer-IDs als Array, bevor Sie die zweite Abfrage ausführen.

Verwenden Sie dann dieses Array im exclude , in den zweiten Abfrageargumenten und führen Sie es dann aus.

AKTUALISIEREN

Wie Sie die IDs der ersten Abfrage in ein Array einfügen, das in der zweiten Abfrage verwendet wird.

Sie haben den Parameter fields nicht verwendet, daher gibt die Abfrage alles zurück, was sie über Benutzer findet ( all (default) Gibt ein Array von WP_User- Objekten zurück )

 // Put the found user IDs in an array, after executing the first user query $exclude = array(); foreach ( $search_query->results as $user ) { $exclude[] = $user->ID; } 

Jetzt können Sie $exclude erfolgreich als Wert des Parameters 'exclude' , wie Sie es in der zweiten Abfrage getan haben.