我需要显示所有按 排序的帖子post_title ACS,如下所示:
A
animal
angel
apple
C
cat
cinema
crime
F
friday
fire
K
kill
king
.................
Run Code Online (Sandbox Code Playgroud)
等等
因此,如果没有标题以 G 开头的帖子,则 G 将不会像上面那样显示或显示为字母分隔符。有人可以帮忙吗?
我将运行一个查询来获取按帖子标题排序的所有帖子,就像您通常使用 get_posts 一样。然后我将循环这些并使用 substr 来获取每个帖子标题的第一个字母。将其设为大写。创建一个新数组。检查该字母是否作为键存在于数组中 (array_key_exists)。如果需要,添加密钥并将帖子放入其中。遵循此过程将为您提供一个易于管理的按字母排序的数组。有更容易的方法吗?也许吧,但这会起作用。
这是实现它的代码:
<?php
$posts = get_posts(
array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
)
);
$letter_keyed_posts = array();
if ( $posts ) {
foreach ( $posts as $post ) {
$first_letter = strtoupper( substr( $post->post_title, 0, 1 ) );
if ( ! array_key_exists( $first_letter, $letter_keyed_posts ) ) {
$letter_keyed_posts[ $first_letter ] = array();
}
$letter_keyed_posts[ $first_letter ][] = $post;
}
}
Run Code Online (Sandbox Code Playgroud)
用于$letter_keyed_posts以您需要的格式输出内容。