Cómo consultar un tipo de publicación personalizada por término

3 may 2012, 16:11:41
Vistas: 15.3K
Votos: 2

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é.

0
Todas las respuestas a la pregunta 1
6
10

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
3 may 2012 16:36:41
Comentarios

@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 Johannes Pille
3 may 2012 17:24:24

No estoy obteniendo ningún resultado con tu código..

jilseego jilseego
3 may 2012 17:36:21

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

Johannes Pille Johannes Pille
3 may 2012 17:40:24

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

jilseego jilseego
3 may 2012 17:42:51

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

jilseego jilseego
3 may 2012 17:56:24

Así que usar WP_Query() todavía obtiene un resultado vacío porque $your_query->have_posts() devuelve un booleano false.

jilseego jilseego
3 may 2012 18:05:29
Mostrar los 1 comentarios restantes