WordPress: ¿cómo muestro las publicaciones agrupadas por taxonomía personalizada?

3 minutos de lectura

Estoy creando una página de preguntas frecuentes utilizando un tipo de publicación personalizada y una taxonomía personalizada. Estoy tratando de crear una lista desordenada para cada taxonomía para agrupar las preguntas frecuentes. En esa lista desordenada, quiero que el primer elemento de la lista sea el nombre de la taxonomía y luego repita el segundo elemento de la lista para todas las preguntas de la taxonomía. esta es la pagina en la que estoy trabajando Enlace.

Actualmente está duplicando las publicaciones en lugar de mostrarlas en las taxonomías correspondientes.

                        <?php
                        // get all the categories from the database
                        $cats = get_terms( array(
                            'taxonomy' => 'faq_categories',
                        )); 

                        // loop through the categories
                        foreach ($cats as $cat) {
                            // setup the category ID
                            $cat_id = $cat->term_id;
                        ?>

                                <!-- Make a header for the category -->
                        <ul id="<?php echo $cat->slug; ?>" class="cd-faq-group">
                            <li class="cd-faq-title">
                                <h2>Questions <?php echo $cat->name; ?></h2>
                            </li>

                            <?php

                            // create a custom wordpress query

                            query_posts( array(
                                'post_type' => 'faqs',
                                'tax_query' => array( 
                                    array( 
                                        'taxonomy' => 'faq_categories', //or tag or custom taxonomy
                                        'field' => 'slug', 
                                        'terms' => 'for-women'
                                    ) 
                                ) 
                            ));

                            // start the wordpress loop!
                            if (have_posts()) : while (have_posts()) : the_post(); ?>

                            <li>
                                <a class="cd-faq-trigger" href="#0"><?php the_title(); ?></a>
                                <div class="cd-faq-content">
                                    <?php the_content(); ?>
                                </div> 
                            </li>

                            <?php endwhile; endif; // done our wordpress loop. Will start again for each category 

                            wp_reset_postdata();
                            ?>


                        </ul>
                        <?php } // done the foreach statement ?>

Su consulta no cambia a medida que itera a través de la $cats formación. Quizás cambiando el valor de la matriz ‘términos’ a $cat->slug le daría mejores resultados.

avatar de usuario
kyle mabaso

Muchas gracias. Ambos han proporcionado una gran perspectiva de lo que me estaba perdiendo. Lo resolví ahora y así es como lo resolví teniendo en cuenta sus sugerencias.

<?php

    $cats = get_terms( 
        array(
            'taxonomy' => 'faq_categories',
            'orderby' => 'term_id',
            'order' => 'ASC'
        )
    ); 

    foreach ($cats as $cat) :
?>


<ul id="<?php echo $cat->slug; ?>" class="cd-faq-group">
    <li class="cd-faq-title">
        <h2>Questions <?php echo $cat->name; ?></h2>
    </li>
<?php

    $questions = new WP_Query(
        array(
            'category_name' => $cat->slug
        )
    );

    $questions = new WP_Query( array(
        'post_type' => 'faqs',
        'order' => 'ASC',
        'tax_query' => array( 
            array( 
                'taxonomy' => 'faq_categories',
                'field' => 'slug', 
                'terms' => array($cat->slug),
            )
        ) 
    ));
?>

<?php if ($questions->have_posts()) :  while ($questions->have_posts()) : $questions->the_post();?>

    <li>
        <a class="cd-faq-trigger" href="#0"><?php the_title(); ?></a>
        <div class="cd-faq-content">
            <?php the_content(); ?>
        </div>
    </li>

    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>
<?php endif; ?>

En tus query_postsu tax_query‘s field debiera ser term_id y tu terms ser asignado a su $cat_id variable, en lugar de un término codificado.

¿Ha sido útil esta solución?