Haga que los mensajes se muestren en bucle por orden alfabético

4

Con este bucle estoy mostrando publicaciones individuales en una página de archivo. Los mensajes están siendo ordenados por la categoría 'Bancos'. Además de eso, ¿cómo puedo mostrarlos en orden alfabético? He intentado usar WP_Query , pero no puedo hacerlo funcionar; rompe mi bucle cada vez.

<h3>Banks & Credit Unions</h3>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); 
    if ( in_category( 'Banks' ) ) { ?>
        <li>
            <a href="<?php the_permalink() ?>">
                <img  src="<?php the_field( 'biller_logo' )?>">
                <?php the_field( 'biller_name' ) ?>
            </a>
        </li>
    <?php } 
endwhile; endif; ?>
</ul>
    
pregunta Andrew Levy 04.12.2015 - 20:33

2 respuestas

3

Para mostrar las publicaciones en orden alfabético descendente, agréguelo a su matriz args (tomado del códice wp)

'orderby' => 'title',
'order'   => 'DESC',

Para mostrar las publicaciones en orden alfabético ascendente, simplemente cambia de DESC a ASC .

Entonces todo se vería así:

$args = array(
    'orderby' => 'title',
    'order'   => 'DESC',
);
$query = new WP_Query( $args );

WP_Query Order by Parameters

O para usar si no desea modificar el bucle principal, use get_posts . La consulta WP altera el ciclo principal cambiando las variables de la variable global $ wp_query. get_posts, por otro lado, simplemente hace referencia a un nuevo objeto WP_Query, y por lo tanto no afecta ni altera el bucle principal. Se usaría de la misma manera, pero cambiando $query = new WP_Query( $args ); a algo como $query = get_posts( $args ); .

Si desea modificar la consulta principal antes de que se ejecute, puede enlazarla utilizando la función pre_get_posts.

    
respondido por el yobddigi 04.12.2015 - 21:33
1

No es el mejor código que he escrito aquí, pero si quieres crear una lista como:

  • A
  • América
  • B
  • Brasil
  • Bahamas

Podrías usar ...

<ul>
                            <?php 
                                query_posts(array( 
                                    'post_type' => 'franchise',
                                    'showposts' => 100,
                                    'orderby'=>'title','order'=>'ASC'
                                ) );  
                                $title_2 = 'A';
                            ?>
                            <?php while (have_posts()) : the_post(); ?> 
                                <?php
                                    $title = get_the_title();
                                    $title_1 = $title[0];
                                    if ($title_1 !== $title_2){
                                        echo '<li>&nbsp;</li><li><h3>' . $title_1 . '</h3></li><li>&nbsp;</li>';
                                        $title_2 = $title_1;
                                    }
                                ?>                              
                                    <li><a href="<?php echo get_the_permalink(); ?>"><?php echo get_the_title(); ?></a></li>
                                <?php endwhile;?>
                            </ul>

Como dije, no es la mejor práctica ... pero puede ordenar y amp; trabaja desde aquí :)

    
respondido por el Ryan Edmondson 02.04.2018 - 17:09

Lea otras preguntas en las etiquetas