J'ai un type de message personnalisé appelé portfolio
et une taxonomie personnalisée appelée build-type
(agissant en tant que catégories)
J'essaie d'interroger les articles portfolio
par build-type
ID, par exemple. toutes les publications du portefeuille dans "Hôtels" (id = 4 pour cette taxonomie)
// gets the ID from a custom field to show posts on a specific page
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array(
'post_type' => 'portfolio',
'showposts' => -1,
'tax_query' => array(
'taxonomy' => 'build-type',
'terms' => $buildType,
'field' => 'term_id'
),
'orderby' => 'title',
'order' => 'ASC'
));
Actuellement, il appelle tous portfolio
posts et pas seulement ceux avec l'ID build-type
Pour 'field' => 'term_id'
devrais-je utiliser term_id
, tag_ID
, id
ou autre chose?
Quelqu'un sait comment faire fonctionner ça?
Merci d'avance!
Cela ne fonctionne pas parce que 'tax_query' doit être un tableau de tableaux (déroutant, je sais).
...
'tax_query' => array(
array(
'taxonomy' => 'build-type',
...
C'est ainsi que vous pouvez regrouper plusieurs règles différentes.
Drew avait raison, tax-query
doit être un tableau de tableaux
La solution finale est:
// gets the ID from a custom field to show posts on a specific page
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array(
'post_type' => 'portfolio',
'showposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'build-type',
'terms' => $buildType,
'field' => 'term_id',
)
),
'orderby' => 'title',
'order' => 'ASC' )
);
Sur github ici:
https://Gist.github.com/1275191
Merci!
Vous devez créer un tableau dans tax_query où vous pouvez également sélectionner des opérateurs. Par exemple, un print_r de tax_query devrait ressembler à ceci.
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
)
)
Bien sûr, vous pouvez changer le champ pour id mais j’ai toujours utilisé des slugs pour le simplifier. Comme vous pouvez le constater, vous pouvez interroger plusieurs taxonomies comme celles-ci.