web-dev-qa-db-fra.com

Faire afficher les messages en boucle par ordre alphabétique

Avec cette boucle, j'affiche des articles uniques sur une page d'archive. Les articles sont triés par catégorie "Banques". En plus de cela, comment puis-je les afficher dans l'ordre alphabétique? J'ai essayé d'utiliser WP_Query, mais je ne parviens pas à le faire fonctionner. ça casse ma boucle à chaque fois.

<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>
4
Andrew Levy

Pour afficher les publications en ordre alphabétique décroissant, ajoutez ceci à votre tableau args (tiré du codex wp).

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

Pour afficher les publications par ordre alphabétique croissant, il suffit de passer de DESC à ASC.

Donc, le tout ressemblerait à ceci:

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

WP_Query Ordre par Paramètres

Ou à utiliser si vous ne souhaitez pas modifier la boucle principale, utilisez get_posts. WP La requête modifie la boucle principale en modifiant les variables de la variable globale $ wp_query. Par contre, get_posts fait simplement référence à un nouvel objet WP_Query et n'affecte donc ni ne modifie la boucle principale. Il serait utilisé de la même manière, mais changerait $query = new WP_Query( $args ); en quelque chose comme $query = get_posts( $args );.

Si vous souhaitez modifier la requête principale avant qu'elle ne soit exécutée, vous pouvez y accéder en utilisant la fonction pre_get_posts.

4
yobddigi

Ce n'est pas le meilleur code que j'ai jamais écrit ici, mais si vous voulez créer une liste comme celle-ci:

  • UNE
  • Amérique
  • B
  • Brésil
  • Bahamas

Vous pouvez utiliser ..

<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>

Comme je l'ai dit - ce n'est pas la meilleure pratique .. mais vous pouvez ranger et travailler à partir d'ici :)

1
Ryan Edmondson