Utilizarea get_posts cu argumente găsite în meta keys

13 oct. 2011, 14:48:42
Vizualizări: 38.3K
Voturi: 8

Folosesc get_posts, dar trebuie să rafinez interogarea bazată pe postări unde un anumit meta_key are o anumită valoare.

Ceva de genul

<?php $reviews = get_posts('post_type=reviews&numberposts=-1&   // de ex. // locatie=berkshire');

Este posibil să fac acest lucru și dacă da, cum?

Minunat

0
Toate răspunsurile la întrebare 2
0
19

get_posts acceptă oricare dintre argumentele pe care le acceptă WP_Query. Deci există câteva opțiuni.

1. meta_key și meta_value

<?php
get_posts(array(
   // alte argumente aici
   'meta_key'   => 'some_key',
   'meta_value' => 'some value'
));

2. meta_query

meta_query este mai sofisticat decât folosirea meta_key și meta_value. De exemplu, să presupunem că doriți să obțineți postări care au meta_key cu una din trei valori:

<?php
get_posts(array(
   // alte argumente aici        
   'meta_query' => array(
      // meta_query primește un array de array-uri, fiți atenți la asta!
      array(
         'key'     => 'some_key',
         'value'   => array('anOption', 'anotherOption', 'thirdOption'),
         'compare' => 'IN'
      )
   )
));

Există o mulțime de exemple pe care le puteți consulta în secțiunea custom fields din documentația WP_Query.

8 iul. 2012 07:47:08
0

Da. Este posibil. Folosește parametrii meta_key și meta_value. meta_key este pentru cheia câmpului personalizat (de ex. locație) și meta_value este pentru valoarea câmpului personalizat (de ex. berkshire).

Folosește codul ajustat mai jos:

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

/* Obține recenzii */
$reviews = get_posts( $args );
13 oct. 2011 16:31:14