Consultar publicaciones por ID de taxonomía personalizado

2 minutos de lectura

Tengo un tipo de publicación personalizada llamada portfolio y una taxonomía personalizada llamada build-type (actuando como categorías)

estoy tratando de consultar portfolio Publicaciones por build-type ID, por ejemplo, todas las publicaciones de la cartera en “Hoteles” (id=4 para esa taxonomía)

// 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'
));

Actualmente está llamando todos portfolio publicaciones y no solo aquellas con el build-type IDENTIFICACIÓN

Para 'field' => 'term_id' debería estar usando term_id, tag_ID, id ¿o algo mas?

¿Alguien sabe cómo hacer que esto funcione?

¡Gracias por adelantado!

avatar de usuario
mattberridge

Lo resolví con la ayuda de: https://wordpress.stackexchange.com/questions/30476/query-posts-by-custom-taxonomy-id

tax-query tiene que ser una matriz de matrices

La solución definitiva es:

// 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' )
);

En github aquí:

https://gist.github.com/1275191

No soy un experto en WP y he invertido horas y horas tratando de resolver el mismo problema. Finalmente encontré esta publicación de blog: http://richardsweeney.com/blog/wordpress-3-0-custom-queries-post-types-and-taxonomies/

La respuesta es algo semi-mala: aparentemente no puedes filtrar así para tipos de publicaciones personalizadas (solo es posible para publicaciones), ¡lo cual es una pena!

Lo que me funcionó fue esto:

$argumentos[‘custom_tax’] = ‘impuesto_personalizado_slug’; query_posts($argumentos);

¡Espero eso ayude!

//Miguel

¿Ha sido útil esta solución?