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.
Johannes Pille
@jilseego Había una coma mal ubicada en él - el fragmento ahora debería estar listo para copiar y pegar...
Johannes Pille
Sí, ya lo había corregido antes que tú. Realmente no obtuve ningún resultado.
jilseego
El primero obtiene un array vacío. El segundo devuelve esto: http://pastebin.com/wnGE88Cn, lo cual no creo que sea correcto(?).
jilseego