Ordenar publicaciones alfabéticamente por categoría/taxonomía personalizada, insertar divisor entre diferentes tipos

wordpress.stackexchange https://wordpress.stackexchange.com/questions/30419

  •  30-10-2019
  •  | 
  •  

Pregunta

En primer lugar, me gustaría agradecerle por todo el gran trabajo que está haciendo. He encontrado una gran cantidad de infos y trucos útiles echando un vistazo a WordPress Respuestas.

Bueno, estoy aquí para preguntar, esa es mi pregunta:

Necesito hacer varias páginas "clasificadas por" con diferentes criterios.

El primero que hice fue "Sort By Title" y uso un montón de código que encontré aquí

" Ordenar publicaciones alfabéticamente por valor de campo personalizado, inserte divisor entre diferentes letras "

Y consigo

A

Post 1 Post 2 Post 3

B

Post 4 ...

Luego trato de editar ese código para hacer una página "Ordenar por categoría" en la que las publicaciones se ordenan alfabéticamente pero se dividen en grupos de categoría, con un "título de categoría" que divide cada grupo.

Entonces, por ejemplo, me gustaría tener

Categoría 1

Post 1 Post 2 Post 3

Categoría 2

Post 4 ...

Pero aquí está el problema ... no soy tan bueno en PHP. ¿Alguien puede ayudar?

Aquí está mi código

                <ul class="list-ensemble">          
                <?php query_posts(array(
                                      'post_type' => 'shows',
                                      'orderby' => 'title',
                                      'order' => 'ASC',
                                      'posts_per_page'=> -1
                                    ) );  
                                    $current_category = '';
                if ( have_posts() ) while ( have_posts() ) : the_post();
                    $category = get_the_category( $post->ID );
                    if ( $category != $current_category ) {
                        $current_category = $category; ?>
                        <li class="category">
                            <?php echo $category->cat_name; ?>
                        </li>
                    <?php } ?>

                        <?php get_template_part( 'content', "sort_shows" ); ?>

                <?php endwhile; // end of the loop. ?>
</ul>

Gracias chicos. Adiós

Carletto0282

EDITAR

Hola, como menciono en el título, estaba tratando de hacer una lista de publicaciones ordenadas incluso por taxonomía personalizada. Funciona como un encanto con este código. Solo quiero preguntar si hay una forma más elegante de que funcione y si tuviera que agregar algo de extremo en algún lugar.

¡Gracias!

                <?php
            $production_co_types = get_terms('production_co_type');
            foreach($production_co_types as $production_co_type) {
              $shows = new WP_Query(array(
                'post_type' => 'shows',
                'orderby' => 'title',
                'order' => 'ASC',
                'post_per_page' => -1,
                'nopaging' => true,
                'taxonomy'=>'production_co_type',
                'term' => $production_co_type->name,
              ));

              echo "<li class='letter'>{$production_co_type->name}</li>";

              while ( $shows->have_posts() ) {
                $shows->the_post();
                $link = get_permalink($post->ID);
                $title = get_the_title();
                echo get_template_part( 'content', "sort_shows" );
              }
            }
             ?> 

Lo encontré aquí

" ¿Página de lista de taxonomía personalizada? "

Edición 2

Ok, estoy de vuelta otra vez. Estoy tratando de hacer lo que dice Jeremy, pero usando taxonomías en lugar de categoría (ya que veo que es más relevante para mí este tipo de clasificación).

Aquí está el código que hice ... desafortunadamente no está funcionando. ¿Alguien puede ayudar?

                    <?php query_posts(array(
                                      'post_type' => 'shows',
                                      'orderby' => 'title',
                                      'order' => 'ASC',
                                      'posts_per_page'=> -1,                              
                                    ) );  
                                $current_production_co_type = '';
            if ( have_posts() ) while ( have_posts() ) : the_post();
                $production_co_type = get_the_terms( 'production_co_type', $post->ID );
                if ( $production_co_type->name != $current_production_co_type ) {
                    $current_production_co_type = $production_co_type->name; ?>
                    <li class="letter">
                        <?php echo $production_co_type->name; ?>
                    </li>
                <?php } ?>

                    <?php get_template_part( 'content', "sort_shows" ); ?>

            <?php endwhile; // end of the loop. ?>

Gracias chicos adiós

Carletto0282

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
scroll top