Ich habe eine benutzerdefinierte Beitragstyp institutions
, die assoziierte Benutzer sind.Erhalten Sie alle Benutzer mit einem benutzerdefinierten Beitragstyp in WordPress verbunden
Immer wenn ich einen neuen Benutzer hinzufüge, kann ich über Advanced Custom Fields
Plugin auswählen, welcher Institution er/sie zugeordnet ist.
Nun, da der Aufbau fertig ist, ich versuche, eine Liste aller Benutzer mit der Institution, die ich zur Zeit (single-institutions.php
)
WP_Query()
können nicht
bin der Anzeige zugeordnet angezeigt werden, weil es mir nicht erlauben, zu erhalten die Benutzer und ich kann wp_list_authors()
nicht verwenden, weil es die meta_query
nicht zulassen wird.
Also bin ich links mit der alten mysql Abfrage.
Aber ich bin mir nicht sicher, wie es weiter geht, weil ich mehrere Tabellen abfragen muss, um das richtige Ergebnis zu erhalten.
wp_users: ID
wp_usermeta
user_id
meta_key: institution
meta_value: a:1:{i:0;s:4:"2875";} // "2875" is the ID of the institution the user is associated with
Wie kann ich dies mit einer direkten MySQL-Abfrage erreichen?
EDIT: Ich habe stattdessen WP_User_Query()
gewechselt, ich hatte keine Ahnung, dass es existiert. Aber ich bin nicht sicher, was in meta_value
$args = array(
'role' => 'Author',
'order' => 'ASC',
'orderby' => 'display_name',
'who' => 'authors',
'exclude' => [1, 7],
'count_total' => true,
'meta_key' => 'institution',
'meta_value' => $post->ID
);
// The User Query
$user_query = new WP_User_Query($args);
// The User Loop
if (! empty($user_query->results)) {
foreach ($user_query->results as $user) {
echo $user->display_name . '<br>';
}
} else {
// no users found
}
Gerade jetzt setzen, wird nichts angezeigt. Wenn ich "meta_value" aus der Abfrage entferne, werden auf allen Seiten alle Benutzer angezeigt, die einer Institution zugeordnet sind.
Wie kann ich es eingrenzen, um die Institution ID ($post->ID
) Ich bin derzeit im Blick?
Dies ist der Wert meta_value
Spalte in wp_usermeta
Tabelle. Es ist serialisiert. Muss ich etwas Spezielles tun, um die ID am Ende zu erhalten?
a:1:{i:0;s:4:"2875";}
Danke, das war wirklich hilfreich. Hatte keine Ahnung 'WP_User_Query()' existiert. Ich bin mir jedoch nicht sicher, was ich für 'meta_value' verwenden soll - ich habe meinen Beitrag aktualisiert, wenn Sie bitte einen Blick darauf werfen. – Halnex
Es hat funktioniert. Ich musste 'LIKE' anstelle von' = 'für' meta_compare' verwenden. Vielen Dank. – Halnex
@Halnex Ah, richtig, ich habe die Tatsache übersehen, dass dies ein serialisiertes Array war. Beachten Sie hier einige Vorbehalte: 1) Eine Meta-Abfrage mit einem 'LIKE'-Operator kann teuer sein, wenn Sie viele Daten haben und die Website-Leistung beeinträchtigen können. Es ist in der Regel in Ordnung, aber wenn Sie Probleme haben, kann dies etwas zu sehen sein. 2) Sie sollten doppelte Anführungszeichen in Ihren 'meta_value' einfügen, zum Beispiel' 'meta_value' => '"'. $ Post-> ID. '"' '. Auf diese Weise vermeiden Sie die Auswahl von Werten wie "19", wenn Sie "9" usw. auswählen wollten. –