WP_Query + Custom Post Type + Categorías

HomeForosWordPressProgramaciónWP_Query + Custom Post Type + Categorías

This topic has 3 voices, contains 6 replies, and was last updated by  LGrusin 109 días ago.

Viewing 7 posts - 1 through 7 (of 7 total)
Autor Publicaciones
Autor Publicaciones
3 febrero 2012 a las 13:58 #59770

aekschoko

Buenas, a ver si alguien sabe ayudarme.
Estoy haciendo un plugin que muestre un listado de post con “WP_Query” pero entre otras cosas… quiero filtrar los resultados mostrando solo un “Custom Post Type” en concreto.
Hasta ahí todo bien, eligo “post_type=videos” y listo. Que es un tipo de post que he creado, al cual no le he añadido taxonomías, o mas bien uso las Categorías y Etiquetas por defecto al igual que los post tradicionales.

El problema viene cuando además, quiero filtar por una categoría en concreto. No consigo hacerlo, porque si uso “category_name” deja de funcionar el filtro de “post_type” así que solo me deja usar uno de los dos.

¿Como podría hacer ésto?

5 febrero 2012 a las 20:36 #59843

Hombre Man

Modifica tu plantilla archive.php, porque la visualización de taxonomías es en realidad una búsqueda, entonces tienes que indicar que en esa búsqueda se incluyan los CPT que deseas.

Una solución más programática, sería agregar un filtro al archivo, para que la búsqueda del CPT no sea hard coded y puedas adaptar tu plugin a más CPT.

5 febrero 2012 a las 20:54 #59846

aekschoko

Gracias por tu respuesta incognito, auqnue he de reconocer que no termino de entender tu solución.

Te explico, la idea del plugin que quiero es para hacer un shortcode tipo [blog post_type="video" category="conferencias" pagination="false" number_post="5" orderby="rand" /]

Así el resultado sería un listado de 5 post aleatorios de tipo “video” pertenecientes a la categoría “conferencias”.

Realizo la consulta con WP_Query, pero no consigo usar los filtros “post_type” y “category” a la vez, solo me funcionan por separado, si solo filtro por uno de ellos.

5 febrero 2012 a las 22:24 #59860

Hombre Man

Prueba convirtiendo el argunto post_type a un array.

WP_Query( array( 'post_type' => array( 'video',), )

6 febrero 2012 a las 10:50 #59888

aekschoko

Nada… no funciona.
Os dejo el trocito de código para ver si os ayuda en qué fallo puedo estar cometiendo.

$wp_query = new WP_Query(array(‘paged’ => false, ‘post_type’ => array(‘video’), ‘category_name’ => ‘conferencias’));

while ($wp_query->have_posts()) : $wp_query->the_post();
[codigo]
endwhile;
wp_reset_query();

Solo funciona correctamente la consulta si mantendo uno de los dos filtros, o ‘post_type’ o ‘category_name’.

6 febrero 2012 a las 10:57 #59890

aekschoko

Por cierto, he probado a hacer la consulta de la siguiente forma pero tampoco funciona. Una vez más solo me filtra por CPT si no filtro a su vez por category.

query_posts(‘paged=false&post_type=video&category_name=conferencias’);
while (have_posts()) : the_post();
[codigo]
endwhile;
wp_reset_query();

6 febrero 2012 a las 16:57 #59898

LGrusin

A ver, por defecto la consulta siempre se hace al post_type post. Si consultas por categoría tienes que decirle también el post_type.

Si no quieres estar poniendo nombre del post_type usa any. Es decir,
query_posts( ‘post_type=any&cat=3′ );
o bien
query_posts( array(‘post_type’=>’any’, ‘cat’=>’3′) );
siendo 3 el Id de la categoría o por su slug
category_name=slug
query_posts( array(‘post_type’=>’any’, ‘category_name’=>’slug’) );

Esto debería funcionar.

Otra cosa más fácil y que no he probado sería lo siguiente:
global $query_string;
query_posts( $query_string . “&post_type=any”);

Esto hace que se le añada a la consulta el post_type any sea la categoría que sea. Ya digo no lo he probado…

Un saludo

Viewing 7 posts - 1 through 7 (of 7 total)

Debes acceder para responder en este hilo.