Ein möglicher Ansatz wäre, eine der Hilfsmethoden in der WPDB-Klasse zu verwenden, um eine verfeinerte metabasierte Abfrage durchzuführen. Die Einschränkung bei der Verwendung einiger dieser Funktionen besteht jedoch darin, dass Sie normalerweise kein einfaches Array von Daten zurückerhalten und in der Regel unnötige Verweise auf Objekteigenschaften erstellen müssen, selbst wenn Sie nur eine Spalte oder Zeile aufrufen.
Natürlich sind nicht alle Funktionen gleich, und die WPDB- Methode, get_col
die ein einfaches, flaches Array der abgefragten Daten zurückgibt , wird absichtlich erwähnt. Ich erwähne dies ausdrücklich, weil das folgende Beispiel diese Methode aufruft .
WordPress - WPDB Auswahl einer
Datenspalte $ wpdb-> get_col ()
Hier ist eine Beispielfunktion, die die Datenbank nach allen Beiträgen eines ausgewählten Beitragstyps, Beitragsstatus und mit einem bestimmten Metaschlüssel (oder benutzerdefinierten Feld für weniger technisch denkende) abfragt.
function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = %s
AND p.post_status = %s
AND p.post_type = %s
", $key, $status, $type ) );
return $r;
}
So zum Beispiel, wenn Sie welche Beiträge , um herauszufinden , wie ein Meta - Schlüssel haben Bewertung , für die Post - Art Filme und Sie möchten , dass innerhalb einer Variablen , die Informationen speichern, ein Beispiel für eine solche Aufforderung wäre ..
$movie_ratings = get_meta_values( 'rating', 'movies' );
Wenn Sie nichts weiter tun wollten, als diese Daten auf dem Bildschirm auszudrucken, kann die Implode-Funktion von PHP dieses einfache Array schnell in Datenzeilen aufteilen.
// Print the meta values seperate by a line break
echo implode( '<br />', get_meta_values( 'YOURKEY' ));
Sie können die zurückgegebenen Daten auch verwenden, um herauszufinden, wie viele Posts über diese Metawerte verfügen, indem Sie beispielsweise eine einfache Schleife über die zurückgegebenen Daten durchführen und ein Array der Zähler erstellen.
$movie_ratings = get_meta_values( 'rating', 'movies' );
if( !empty( $movie_ratings ) ) {
$num_of_ratings = array();
foreach( $movie_ratings as $meta_value )
$num_of_ratings[$meta_value] = ( isset( $num_of_ratings[$meta_value] ) ) ? $num_of_ratings[$meta_value] + 1 : 1;
}
/*
Result:
Array(
[5] => 10
[9] => 2
)
// ie. there are 10 movie posts with a rating of 5 and 2 movie posts with a rating of 9.
*/
Diese Logik könnte auf verschiedene Arten von Daten angewendet und auf eine beliebige Anzahl verschiedener Arten erweitert werden. Daher hoffe ich, dass meine Beispiele hilfreich und einfach genug waren, um zu folgen.