Ich verwende get posts, aber ich muss die Abfrage basierend auf Posts verfeinern, bei denen ein bestimmter meta_key einen bestimmten Wert hat.
Etwas wie das
<?php $reviews = get_posts('post_type=reviews&numberposts=-1& // eg. // location=berkshire');
Ist das möglich und wenn ja wie?
Wunderbar
get_posts
akzeptiert alle Argumente, die WP_Query akzeptiert. Es gibt also ein paar Möglichkeiten.
1. meta_key
und meta_value
<?php
get_posts(array(
// some more args here
'meta_key' => 'some_key',
'meta_value' => 'some value'
));
2. meta_query
meta_query
ist komplexer als die Verwendung von meta_key
und meta_value
. Angenommen, Sie möchten Posts mit dem meta_key mit einem von drei Werten erhalten:
<?php
get_posts(array(
// more args here
'meta_query' => array(
// meta query takes an array of arrays, watch out for this!
array(
'key' => 'some_key',
'value' => array('anOption', 'anotherOption', 'thirdOption'),
'compare' => 'IN'
)
)
));
Im Abschnitt Benutzerdefinierte Felder der Dokumentation zu WP_Query
können Sie unzählige Beispiele auschecken.
Ja. Es ist möglich. Verwenden Sie die Parameter meta_key
und meta_value
. meta_key
steht für einen benutzerdefinierten Feldschlüssel (z. B. Ort) und meta_value
steht für einen benutzerdefinierten Feldwert (z. B. Berkshire).
Verwenden Sie den verfeinerten Code unten:
/* Query args. */
$args = array(
'post_type' => 'reviews',
'posts_per_page' => -1,
'meta_key' => 'location',
'meta_value' => 'berkshire'
);
/* Get Reviews */
$reviews = get_posts( $args );