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
部门有人能帮我吗?
非常感谢你的帮助
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>\';
}
}