Fragen Sie gleichzeitig first_name und last_name von wp_usermeta ab

Ich versuche, den ersten und den letzten Namen aller Benutzer gleichzeitig zu holen, indem ich das wpdb-Objekt und die wp_usermeta-Tabelle benutze. Ich kann nicht herausfinden, wie man beide in dieselbe Abfrage bringt. Unten ist, was ich bisher habe.

global $wpdb; $ansatte = $wpdb->get_results("SELECT user_id, meta_value AS first_name FROM wp_usermeta WHERE meta_key='first_name'"); foreach ($ansatte as $ansatte) { echo $ansatte->first_name; } 

Mit dem obigen Code kann ich die Vornamen aller Benutzer aussprechen, aber ich möchte, dass auch der Nachname verfügbar ist.

 foreach ($ansatte as $ansatte) { echo $ansatte->first_name . ' ' $ansatte->last_name; } 

Irgendwelche Ideen?

Solutions Collecting From Web of "Fragen Sie gleichzeitig first_name und last_name von wp_usermeta ab"

Ich kann keine saubere, native Methode finden, um diese Daten zu erhalten. Es gibt ein paar Möglichkeiten, wie ich das machen kann: Erstens, etwas wie:

 $sql = " SELECT user_id,meta_key,meta_value FROM {$wpdb->usermeta} WHERE ({$wpdb->usermeta}.meta_key = 'first_name' OR {$wpdb->usermeta}.meta_key = 'last_name')"; $ansatte = $wpdb->get_results($sql); var_dump($sql); $users = array(); foreach ($ansatte as $a) { $users[$a->user_id][$a->meta_key] = $a->meta_value; } var_dump($users); 

Sie können dann tun:

 foreach ($users as $u) { echo $u['first_name'].' '.$u['last_name']; } 

… um Ihre Benutzernamen zu wiederholen.

Die zweite Möglichkeit, eine reinere SQL-Methode, ist das, was Sie versuchten:

 $sql = " SELECT {$wpdb->usermeta}.user_id,{$wpdb->usermeta}.meta_value as first_name,m2.meta_value as last_name FROM {$wpdb->usermeta} INNER JOIN {$wpdb->usermeta} as m2 ON {$wpdb->usermeta}.user_id = m2.user_id WHERE ({$wpdb->usermeta}.meta_key = 'first_name' AND m2.meta_key = 'last_name')"; $ansatte = $wpdb->get_results($sql); foreach ($ansatte as $ansatte) { echo $ansatte->first_name . ' ' . $ansatte->last_name; } 

Sie können auch get_users() oder WP_User_Query , um Benutzer WP_User_Query , aber die gewünschten Meta-Daten sind nicht in den Daten enthalten, und es würde mehr Arbeit erfordern, sie abzurufen.

Dies ist eine direkte MySQL-Pivot-Antwort für phpMyAdmin unter der Annahme, dass das WordPress-Tabellenpräfix “wp_” lautet.

 SELECT t1.id, t1.user_email, MAX(CASE WHEN t2.meta_key = 'first_name' THEN meta_value END) AS first_name, MAX(CASE WHEN t2.meta_key = 'last_name' THEN meta_value END) AS last_name FROM wp_users AS t1 INNER JOIN wp_usermeta AS t2 ON t1.id = t2.user_id GROUP BY t1.id, t1.user_email;