Cómo consultar un tipo de publicación personalizada por término
Esto parece trivial pero no logro que funcione. Aquí está mi código:
$args = array(
'numberposts' => -1, // Obtener todos los posts
'eventcategory' => 'nice-events', // Término de la taxonomía
'post_type' => 'event', // Tipo de publicación personalizada
'post_status' => 'publish' // Solo posts publicados
);
var_dump(get_posts($args)); // Mostrar resultados de la consulta
Como puedes ver, mi taxonomía es eventcategory
y el término es nice-events
. En realidad hay más de 50 términos y sin importar qué término use en lugar de nice-events
, siempre obtengo el mismo resultado: todos los posts. Así que el término está siendo ignorado y no tengo idea de por qué.
No puedes inventar tus propios argumentos - en lugar de reemplazar el argumento 'category'
con el nombre de tu taxonomía, usa 'tax_query'
.
Consulta la sección "parámetros de taxonomía" en el codex sobre 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 );
// hacer algo con $your_query
Alternativamente, podrías hacer uso de la clase 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 );
// hacer algo con $your_query

@kaiser En efecto, puedes hacerlo. Tenía la impresión de que get_posts()
no admitía tax_queries. Tienes razón, el codex dice que sí lo hace.

@jilseego Había una coma mal ubicada en él - el fragmento ahora debería estar listo para copiar y pegar...

Sí, ya lo había corregido antes que tú. Realmente no obtuve ningún resultado.

El primero obtiene un array vacío. El segundo devuelve esto: http://pastebin.com/wnGE88Cn, lo cual no creo que sea correcto(?).
