如果你搜索这个网站,大多数“display nth post different”问题都与这个问题密切相关,老实说,这是一个PHP+逻辑问题,而不是WordPress问题。
if (have_posts()) {
$curr_letter = \'\';
echo \'<div class="alphawrapper">\';
while (have_posts()) {
the_post();
$title = get_the_title();
$title_array = explode(\' \', $title);
$second_word = $title_array[1];
$this_letter = substr($second_word, 0, 1);
if ($this_letter != $curr_letter) {
if (!empty($curr_letter)) {
echo \'</div><div class="alphawrapper">\';
}
$curr_letter = $this_letter; ?>
<div id="sort-<?php echo strtolower($this_letter); ?>" class="alpha_title">
<?php echo $this_letter; ?>
</div><!--End alpha_title--><?php
} ?>
<a href="<?php the_permalink(); ?>"><?php echo $second_word; ?></a><?php
}
echo \'</div>\';
}
然而,
do not use query_posts
. 网上有上千个“教程”推荐它,包括部分抄本,但不要使用它。
应该注意的是,使用此replace the main query 在页面上可以increase page loading times, 在最坏的情况下more than
doubling the amount of work needed or more. 虽然易于使用,但该功能prone to confusion and problems 过后有关详细信息,请参阅下面关于注意事项的注释。
http://codex.wordpress.org/Function_Reference/query_posts (重点矿山)
在上使用筛选器pre_get_posts
相反在您的主题中functions.php
放置:
function pregp_wpse_110875($qry) {
if ($qry->is_main_query() && $qry->is_archive()) {
$qry->set(\'posts_per_page\',20);
$qry->set(\'orderby\',\'title\');
$qry->set(\'order\',\'ASC\');
}
}
add_action(\'pre_get_posts\',\'pregp_wpse_110875\');