web-dev-qa-db-fra.com

Utilisation de get_posts avec des arguments trouvés dans des clés méta

J'utilise get posts, mais je dois affiner la requête en fonction des posts où une certaine méta_key a une certaine valeur.

Quelque chose comme ça

<?php $reviews = get_posts('post_type=reviews&numberposts=-1&   // eg. // location=berkshire');

Est-il possible de faire cela et si oui comment?

Merveilleux

3
Robin Knight

get_posts accepte tous les arguments que WP_Query accepte. Donc, il y a quelques options.

1. meta_key et meta_value

<?php
get_posts(array(
   // some more args here
   'meta_key'   => 'some_key',
   'meta_value' => 'some value'
));

2. meta_query

meta_query est plus sophistiqué que d'utiliser meta_key et meta_value. Par exemple, supposons que vous souhaitiez obtenir des publications contenant la méta_key avec l'une des trois valeurs suivantes:

<?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'
      )
   )
));

Il y a une tonne d'exemples à vérifier dans la section des champs personnalisés de la documentation de WP_Query.

9
chrisguitarguy

Oui. C'est possible. Utilisez les paramètres meta_key et meta_value. meta_key est destiné à la clé de champ personnalisé (emplacement, par exemple) et meta_value à la valeur de champ personnalisé (par exemple, berkshire).

Utilisez le code raffiné ci-dessous:

/* 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