我在一个类别模板的循环中使用了它,以获得编号的帖子列表,并在下一页继续:
<?php
$mypage = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$ppp = get_query_var(\'posts_per_page\');
$counter = ($mypage * $ppp) - $ppp;
while(have_posts()) : the_post(); $counter++; ?>
<div class="entry">
<?php echo $counter; the_title(\'\'); ?>
</div>
<?php endwhile; ?>
建议:
s-ha-dum 作为
answer to another question 在StackExchange上。
然而,我需要这个循环来按asc顺序对帖子进行排序,我不知道如何在所有这些变量就绪的情况下进行排序。通常,在循环之前,我会使用如下内容,它会非常有效:
<?php $sortorder= new WP_Query( \'orderby=date&sort=asc\' ); ?>
代码的最终结果如下:
<?php
$mypage = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$ppp = get_query_var(\'posts_per_page\');
$counter = ($mypage * $ppp) - $ppp;
$sortorder= new WP_Query( \'orderby=date&sort=asc\' );
while ( $sortorder->have_posts() ) : $sortorder->the_post(); $counter++ ?>
<div class="entry">
<?php echo $counter; the_title(\'\'); ?>
</div>
<?php endwhile; ?>
但这并没有像预期的那样奏效。它确实按升序对它们进行排序,但所有页面都显示相同的标题列表,只是数字有所变化。所以同样的10个标题显示在第一页,编号为1-10,然后再次显示在第二页,但编号从11开始。。。等等
因此,请原谅我的无知,并帮助我理解我的错误所在以及如何解决它。
非常感谢。
<小时/>
Update: This is the final working query:
<?php
$mypage = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$ppp = get_query_var(\'posts_per_page\');
$counter = ($mypage * $ppp) - $ppp;
$query = new WP_Query( array(
\'category_name\' => \'research\',
\'paged\' => $paged,
\'posts_per_page\' => 20,
\'orderby\' => \'date\',
\'order\' => \'asc\',
) );
while ( $query->have_posts() ) : $query->the_post(); $counter++ ?>
<div class="entry">
<?php echo $counter; the_title(\'\'); ?>
</div>
<?php endwhile; ?>
<小时/>
Update #2: Improved answer based on further comments by Jaydip Nimavat. 类别页面模板中的循环现在是:
<?php
$mypage = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$ppp = get_query_var(\'posts_per_page\');
$counter = ($mypage * $ppp) - $ppp;
while ( have_posts() ) : the_post(); $counter++ ?>
<div class="entry">
<?php echo $counter; the_title(\'\'); ?>
</div>
<?php endwhile; ?>
以及
functions.php
现在包括:
// Sort order for research, articles, and literature category pages
function custom_posts_per_page($query) {
if( !is_admin() && $query->is_category( array(\'research\',\'articles\',\'literature\') )) {
$qobj = get_queried_object();
if( isset($qobj->taxonomy) && \'category\' == $qobj->taxonomy ) {
$query->set( \'orderby\', \'date\' );
$query->set( \'order\', \'asc\' );
}
}
}
add_filter( \'pre_get_posts\', \'custom_posts_per_page\' );
一切都很完美。谢谢你,杰迪普。
最合适的回答,由SO网友:Jaydip Nimavat 整理而成
将分页参数添加到WP_Query
,Check Here.
请检查您的查询:$sortorder= new WP_Query( \'orderby=date&sort=asc\' );
没有参数posts_per_page
和paged
, 因此,每次只会得到相同的(第1页)结果,并显示相同的数据。
如果只想在主查询中管理某些参数,请不要使用自定义查询使用pre_get_posts
钩
请检查:
<?php
function custom_posts_per_page($query) {
if( !is_admin() && $query->is_category()) {
$qobj = get_queried_object();
if( isset($qobj->taxonomy) && \'category\' == $qobj->taxonomy ) {
$query->set( \'orderby\', \'date\' );
$query->set( \'order\', \'asc\' );
}
}
}
add_filter( \'pre_get_posts\', \'custom_posts_per_page\' );