wake-up-neo.com

Verwendung von get_posts mit Argumenten in Metaschlüsseln

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

3
Robin Knight

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.

9
chrisguitarguy

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 );
1
byjml