Cum să interoghez un custom post type după termen?
Pare trivial dar nu reușesc să fac asta să funcționeze. Iată codul meu:
$args = array(
'numberposts' => -1,
'eventcategory' => 'evenimente-faine',
'post_type' => 'event',
'post_status' => 'publish'
);
var_dump(get_posts($args));
După cum poți vedea, taxonomia mea este eventcategory
și termenul este evenimente-faine
. Există de fapt peste 50 de termeni și indiferent de ce termen folosesc în loc de evenimente-faine
, primesc întotdeauna același rezultat: toate postările. Deci termenul este ignorat și nu înțeleg de ce.
Nu puteți crea propriile argumente - în loc să înlocuiți argumentul 'category'
cu numele taxonomiei, folosiți 'tax_query'
.
Consultați secțiunea "parametri de taxonomie" din codex pentru get_posts.
$args = array(
'post_type' => 'event',
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'eventcategory',
'field' => 'slug',
'terms' => 'nice-events',
),
),
);
$your_query = get_posts( $args );
// faceți ceva cu $your_query
Alternativ, puteți utiliza clasa WP_Query
:
$args = array(
'posts_per_page' => -1,
'post_type' => 'event',
'post_status' => 'publish',
'tax_query' => array(
array(
'taxonomy' => 'eventcategory',
'field' => 'slug',
'terms' => 'nice-events'
),
),
);
$your_query = new WP_Query( $args );
// faceți ceva cu $your_query

@kaiser Într-adevăr, poți. Am crezut greșit că get_posts()
nu suportă tax_queries. Ai dreptate, codex-ul confirmă că are suport.

@jilseego Era o virgulă pusă greșit - fragmentul de cod ar trebui să fie acum gata de copiat & lipit...

Da, am corectat deja asta înainte să o faci tu. Nu am obținut niciun rezultat, sincer.

Primul returnează un array gol. Al doilea returnează asta: http://pastebin.com/wnGE88Cn, care nu cred că este corect(?).
