Interogare înregistrări după ID-ul taxonomiei personalizate
Am un tip de postare personalizat numit portfolio
și o taxonomie personalizată numită build-type
(care acționează ca și categorii)
Încerc să interoghez postările de tip portfolio
după ID-ul din build-type
, de exemplu toate postările Portfolio din "Hotels" (id=4 pentru acea taxonomie)
// preia ID-ul dintr-un câmp personalizat pentru a afișa postări pe o pagină specifică
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// execută interogarea
query_posts(array(
'post_type' => 'portfolio',
'showposts' => -1,
'tax_query' => array(
'taxonomy' => 'build-type',
'terms' => $buildType,
'field' => 'term_id'
),
'orderby' => 'title',
'order' => 'ASC'
));
În prezent, aceasta afișează toate postările de tip portfolio
și nu doar cele cu ID-ul din build-type
Pentru 'field' => 'term_id'
ar trebui să folosesc term_id
, tag_ID
, id
sau altceva?
Știe cineva cum să rezolv această problemă?
Mulțumesc anticipat!

Motivul pentru care nu funcționează este că 'tax_query' trebuie să fie un array de array-uri (știu, este confuz).
...
'tax_query' => array(
array(
'taxonomy' => 'build-type',
...
Este structurat astfel pentru a putea grupa mai multe reguli diferite împreună.

Bună Drew. Asta a rezolvat problema. Am postat scriptul final pe Github https://gist.github.com/1275191

Drew avea dreptate, tax-query
trebuie să fie un array de array-uri
Soluția finală este:
// obține ID-ul dintr-un câmp personalizat pentru a afișa postări pe o anumită pagină
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// execută interogarea
query_posts(array(
'post_type' => 'portfolio',
'showposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'build-type',
'terms' => $buildType,
'field' => 'term_id',
)
),
'orderby' => 'title',
'order' => 'ASC' )
);
Pe github aici:
https://gist.github.com/1275191
Mulțumesc!

Refuzarea răspunsului meu și acceptarea propriului tău răspuns chiar doare, omule... mă doare în suflet. Dacă are nevoie cineva de mine, voi fi în lounge.

Hah, scuze, amice. Sunt nou în toate astea, nu mi-am dat seama că poți avea doar un răspuns acceptat. O să-l marchez din nou ca să poți reveni din lounge.

Trebuie să creați un array în interiorul tax_query unde puteți selecta și operatori. De exemplu, un print_r al tax_query ar trebui să arate astfel.
Array
(
[relation] => AND
[0] => Array
(
[taxonomy] => build-type
[terms] => Array
(
[0] => term1
[1] => term2blabla
)
[field] => slug
[operator] => IN
)
[1] => Array
(
[taxonomy] => another-taxonomie
[terms] => Array
(
[0] => term1
[1] => term2
)
[field] => slug
[operator] => IN
)
)
Desigur, puteți schimba field pentru id, dar eu întotdeauna am folosit slug-uri pentru a păstra lucrurile simple. După cum puteți vedea, puteți interoga mai multe taxonomii în acest fel.
