• Resuelto jordano_p

    (@jordano_p)


    Hola, estoy en un proyecto web, en el cual me estoy complicando la vida un poco más de lo que debería, pero todo sea por que el trabajo sea más sencillo para el cliente.

    lo que me planteo es lo siguiente:

    Tengo las siguiente estructura de categorías

    • Categoría Padre
    • Categoria hija 1
    • post 1
    • post 2
    • Categoria hija 2
    • post 1
    • post 2
    • Categoria hija 3
    • post 1
    • post 2

    Como pueden notar en la estructura, lo que quiero es mostrar un listado de las categorías hijas de una categoría X, y los post de estas categorías hijas.

    la idea es mostrar un acordeón, donde el titulo es el nombre de la categoría hija, y al desplegar el acordeón se muestran los post de esa categoría.

    lo del acordeón lo hago yo, solo me interesa la consulta a crear para mostrar este listado.

    Muchas gracias, espero alguien me de alguna idea.

    Un saludo.

Viendo 1 respuesta (de un total de 1)
  • Iniciador del debate jordano_p

    (@jordano_p)

    Ya he solucionado el tema, trataré de explicar como lo hice, igual le puede servir a alguien más.

    1- He creado una función en el archivo function.php, la cual recibe la ID de la categoría por parámetro, este es el código de la función.

    <?php
    function itemAcordeon($ID_cat){	?>
       <h3>
          <?php echo get_cat_name($ID_cat);?>
          <small><?php echo $post_count;?></small>
       </h3>
       <div class="item">
          <?php
          $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
          $args = array(
             'cat' => $ID_cat,
             'paged' => $paged,
             'order' => ASC,
             'posts_per_page' => 15
          );
    
             $query = new WP_Query($args);
             $post_count = $query->post_count;
    
             if ( $query->have_posts() ) : while ( $query->have_posts() ) :
             $query->the_post();
          ?>
    
             <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <h2>
                   <a>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
                </h2>
    
                <div class="entry" >
                   <?php the_excerpt();?>
                </div>
    
                <?php if ( has_post_thumbnail() ) { echo '<div class="featured-thumbnail">'; the_post_thumbnail(); echo '</div>'; } ?>
             </div> <!-- final post destacados -->
    
    	   <?php endwhile; endif; ?>
    	</div>
    <?php }?>

    Esta función muestra un listado, donde muestro el titulo de cada categoría con sus respectivas entradas. Para mostrar este listado he creado una plantilla personalizada para esta categoría con el siguiente código.

    <!-- Inicio acordeón -->
    <div id="accordion">
       <?php
       $ID_cat = get_query_var('cat');
       $child_cats = (array) get_term_children( $ID_cat, 'category' );//Pasa ID + tipo a mostrar (page - post - category -etc)
       $count_cat = count($child_cats);
    
       if ($count_cat > 0) {
          for ($i=0; $i < $count_cat ; $i++) {
    	itemAcordeon($child_cats[$i]);
          }
    
       }?>
    </div>
    <!-- Final acordeón -->

    Explico un poco el código:

    $ID_cat = get_query_var('cat'); Con esta línea capturamos el ID de la categoría actual y lo guardamos en esta variable.

    $child_cats = (array) get_term_children( $ID_cat, 'category' );
    Creamos un array el cual contendrá las categorías hijas de $ID_cat.

    if ($count_cat > 0) {
          for ($i=0; $i < $count_cat ; $i++) {
    	itemAcordeon($child_cats[$i]);
          }

    Por último creamos un for el cual llamara la función tantas veces como categorías hijas tenga la categoría actual.

    Esta es la solución con la que he conseguido mostrar un acordeón de jQuery UI, donde el titulo del cada acordeón es un nombre de una sub categoría, y el contenido de cada acordeón, es un listado de post de dicha categoría.

    Pueden ver esto en funcionamiento en esta web: surf-In

    Espero le sirva a alguien más, un saludo.

Viendo 1 respuesta (de un total de 1)
  • El debate ‘Mostrar listado de categorías hijas y sus respectivos post’ está cerrado a nuevas respuestas.