custom-post-types – Mostrar todas las publicaciones en un tipo de publicación personalizada, agrupadas por una taxonomía personalizada

Pregunta:

Estoy trabajando en una página de miembros donde uso un tipo de publicación personalizada con una taxonomía personalizada. Mi tipo de publicación personalizada se llama member y mi taxonomía personalizada se llama member_groups .

Quiero enumerar a todos los miembros, pero agruparlos en sus respectivos grupos.

Para ser claros, tengo 35 miembros divididos en 9 grupos, por lo que, en lugar de hacer la misma consulta nueve veces, quiero hacerlo una vez, pero agruparlos, de modo que Member1, Member4 y Member 11 se agrupen en un grupo, llamado "Marketing".

Estoy usando WP_Query para recuperar todas las publicaciones en el miembro de tipo de publicación. He intentado varios intentos pero sin resultado satisfactorio.

¿Cómo puedo lograrlo?

Respuesta:

Por lo tanto, podría considerar automatizar las múltiples consultas.

Primero, obtenga la lista de términos en su taxonomía personalizada, usando get_terms() :

<?php
$member_group_terms = get_terms( 'member_group' );
?>

Luego, recorra cada uno de ellos, ejecutando una nueva consulta cada vez:

<?php
foreach ( $member_group_terms as $member_group_term ) {
    $member_group_query = new WP_Query( array(
        'post_type' => 'member',
        'tax_query' => array(
            array(
                'taxonomy' => 'member_group',
                'field' => 'slug',
                'terms' => array( $member_group_term->slug ),
                'operator' => 'IN'
            )
        )
    ) );
    ?>
    <h2><?php echo $member_group_term->name; ?></h2>
    <ul>
    <?php
    if ( $member_group_query->have_posts() ) : while ( $member_group_query->have_posts() ) : $member_group_query->the_post(); ?>
        <li><?php echo the_title(); ?></li>
    <?php endwhile; endif; ?>
    </ul>
    <?php
    // Reset things, for good measure
    $member_group_query = null;
    wp_reset_postdata();
}
?>

No veo nada particularmente malo en este enfoque, aunque puede tener una capacidad limitada para escalar (es decir, si tiene cientos o miles de miembros, o términos de member_group, es posible que vea problemas de rendimiento).

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım