このループで、私はアーカイブページに単一の投稿を表示しています。投稿はカテゴリ '銀行'で分類されています。それに加えて、どうやってそれらをアルファベット順に表示することができますか?私は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>
アルファベットの降順で投稿を表示するには、これをあなたのargs
配列に追加してください(wp codexから取得)
'orderby' => 'title',
'order' => 'DESC',
昇順で投稿を表示するには、DESC
をASC
に切り替えるだけです。
そのため、全体は次のようになります。
$args = array(
'orderby' => 'title',
'order' => 'DESC',
);
$query = new WP_Query( $args );
メインループを変更したくない場合はget_posts
を使用してください。 WP queryは、グローバル変数$ wp_queryの変数を変更することによってメインループを変更します。一方、get_postsは新しいWP_Queryオブジェクトを参照するだけなので、メインループに影響を与えたり変更したりすることはありません。これは同じように使用されますが、$query = new WP_Query( $args );
を$query = get_posts( $args );
のようなものに変更します。
実行前にメインクエリを変更したい場合は、関数pre_get_postsを使用してメインクエリにフックすることができます。
これまでに書いた中で最高のコードではありませんが、次のようなリストを作成したい場合は、
あなたが使用することができます..
<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> </li><li><h3>' . $title_1 . '</h3></li><li> </li>';
$title_2 = $title_1;
}
?>
<li><a href="<?php echo get_the_permalink(); ?>"><?php echo get_the_title(); ?></a></li>
<?php endwhile;?>
</ul>
私が言ったように - ベストプラクティスではありません..しかし、あなたはここから片付けることができます:)