Faça postagens de exibição de loop por ordem alfabética

4

Com esse loop, estou exibindo postagens únicas em uma página de arquivo. As postagens estão sendo classificadas pela categoria 'Bancos'. Além disso, como posso exibi-los em ordem alfabética? Eu tentei usar WP_Query , mas não consigo fazer isso funcionar; quebra meu loop a 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>
    
por Andrew Levy 04.12.2015 / 20:33

2 respostas

3

Para exibir postagens em ordem alfabética decrescente, adicione isso ao array args (extraído do códice wp)

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

Para exibir postagens em ordem alfabética crescente, basta alternar DESC para ASC .

Então, a coisa toda seria como:

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

WP_Query Order por parâmetros

Ou para usar se você não quiser alterar o loop principal, use get_posts . A consulta WP altera o loop principal alterando as variáveis da variável global $ wp_query. get_posts, por outro lado, simplesmente faz referência a um novo objeto WP_Query e, portanto, não afeta ou altera o loop principal. Ele seria usado da mesma maneira, mas alterando $query = new WP_Query( $args ); para algo como $query = get_posts( $args ); .

Se você quiser alterar a consulta principal antes de executá-la, poderá conectá-la usando a função pre_get_posts.

    
por yobddigi 04.12.2015 / 21:33
1

Não é o melhor código que já escrevi aqui, mas se você quiser criar uma lista como:

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

Você poderia 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 eu disse - não é a melhor prática ... mas você pode arrumar & trabalhar daqui:)

    
por Ryan Edmondson 02.04.2018 / 17:09

Tags