Usando get_posts com argumentos encontrados em chaves meta

3

Estou usando o recurso "Obter postagens", mas preciso refinar a consulta com base em postagens em que um determinado meta_key tenha um determinado valor.

Algo parecido com isto

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

É possível fazer isso e, em caso afirmativo, como?

Maravilhosa

    
por Robin Knight 13.10.2011 / 13:48

2 respostas

8

get_posts aceita qualquer um dos argumentos que WP_Query aceita. Então, há algumas opções.

1. meta_key e meta_value

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

2. meta_query

meta_query é mais sofisticado do que usar meta_key e meta_value . Por exemplo, digamos que você queira postagens que tenham meta_key com um dos três valores:

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

Há muitos exemplos para você fazer o checkout na seção de campos personalizados da documentação de WP_Query .

    
por chrisguitarguy 08.07.2012 / 06:47
1

Sim. É possível. Use os parâmetros meta_key e meta_value . meta_key é para a chave do campo personalizado (por exemplo, localização) e meta_value é para o valor do campo personalizado (por exemplo, berkshire).

Use o código refinado abaixo:

/* Query args. */
$args = array(
    'post_type' => 'reviews',
    'posts_per_page' => -1,
    'meta_key' => 'location', 
    'meta_value' => 'berkshire'
);

/* Get Reviews */
$reviews = get_posts( $args );
    
por byjml 13.10.2011 / 15:31