WP_Query + Custom Post Type + Categorías

Inicio Foros WordPress Programación WP_Query + Custom Post Type + Categorías

Este debate contiene 6 respuestas, tiene 3 mensajes y lo actualizó  LGrusin hace 6 años, 5 meses.

  • Autor
    Publicaciones
  • #59770

    aekschoko
    Participante

    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?

  • #59843

    Hombre Man
    Participante

    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.

  • #59846

    aekschoko
    Participante

    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.

  • #59860

    Hombre Man
    Participante

    Prueba convirtiendo el argunto post_type a un array.

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

  • #59888

    aekschoko
    Participante

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

  • #59890

    aekschoko
    Participante

    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();

  • #59898

    LGrusin
    Miembro

    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

El foro ‘Programación’ está cerrado y no se permiten nuevos debates ni respuestas.

Pin It on Pinterest