列出帖子,并按字母A-Z排列

时间:2018-01-20 作者:user2882154

0向下votefavorite

我在我的网站上有一个帖子列表,我想做的是按标题从a-Z按字母顺序将它们包装起来,得到如下术语表:

A、 苹果公司

B、 香蕉

C、 卡洛茨

D

E

F

G、 格林纳达

以此类推,直到字母z。

即使没有邮件,我也要把信展示出来。

我想把结果包装在这个结构中:

<div class="group_letter">
<div class="letter">A</div>
<div class="post">Apple</div>
</div>

<div class="group_letter">
<div class="letter">B</div>
<div class="post">Banana</div>
</div>
以下是我目前掌握的情况:

<?php 
$letter=\' \'; 
query_posts( array ( \'post_type\' => \'auteurs\', \'orderby\' => \'title\', \'order\' => \'ASC\' ) );
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php 
$title=get_the_title(); 
$initial=strtoupper(substr($title,0,1));
if($initial!=$letter) {
echo "<div>$initial</div>";
$letter=$initial;
}

echo "<div class=\'post\'>" . $title. "</div>";
?>

<?php endwhile; endif; wp_reset_query(); ?>
结果如下:

<div class=\'letter\'>A</div>
<div class=\'post\'>Apple</div>    

<div class=\'letter\'>B</div>
<div class=\'post\'>Banana</div>    

<div class=\'letter\'>C</div>
<div class=\'post\'>carotts</div>   

<div class=\'letter\'>G</div>
<div class=\'post\'>Grenanda</div>
我有两个问题:

不会显示空字母group_letter 部门有人能帮我吗?

非常感谢你的帮助

1 个回复
SO网友:Milo

我会反过来做——在字母表上循环,检查所有帖子是否与每个字母匹配。

$all_posts = new WP_Query(
    array(
        \'orderby\' => \'title\',
        \'order\' => \'ASC\',
        \'posts_per_page\' => -1
    )
);

if( $all_posts->have_posts() ){
    foreach( range( \'A\', \'Z\' ) as $letter ) {
        echo \'<div class="group_letter"><div class="letter">\' . $letter . \'</div>\';
        while( $all_posts->have_posts() ){
            $all_posts->the_post();
            $title = get_the_title(); 
            $initial = strtoupper( substr( $title, 0, 1 ) );
            if( $initial == $letter ){
                echo \'<div class="post">\' . $title . \'</div>\';
            }
        }
        $all_posts->rewind_posts();
        echo \'</div>\';
    }
}

结束