web-dev-qa-db-ja.com

ループ表示ポストをアルファベット順にする

このループで、私はアーカイブページに単一の投稿を表示しています。投稿はカテゴリ '銀行'で分類されています。それに加えて、どうやってそれらをアルファベット順に表示することができますか?私はWP_Queryを使ってみましたが、うまく動かせません。毎回私のループを壊します。

<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

アルファベットの降順で投稿を表示するには、これをあなたのargs配列に追加してください(wp codexから取得)

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

昇順で投稿を表示するには、DESCASCに切り替えるだけです。

そのため、全体は次のようになります。

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

WP_Queryによるパラメータの順序

メインループを変更したくない場合はget_postsを使用してください。 WP queryは、グローバル変数$ wp_queryの変数を変更することによってメインループを変更します。一方、get_postsは新しいWP_Queryオブジェクトを参照するだけなので、メインループに影響を与えたり変更したりすることはありません。これは同じように使用されますが、$query = new WP_Query( $args );$query = get_posts( $args );のようなものに変更します。

実行前にメインクエリを変更したい場合は、関数pre_get_postsを使用してメインクエリにフックすることができます。

4
yobddigi

これまでに書いた中で最高のコードではありませんが、次のようなリストを作成したい場合は、

  • A
  • アメリカ
  • B
  • ブラジル
  • バハマ

あなたが使用することができます..

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

私が言ったように - ベストプラクティスではありません..しかし、あなたはここから片付けることができます:)

1
Ryan Edmondson