我希望有人可以帮我解决这个问题。它给了我一些问题。我正在尝试让自定义类别页面显示页面开头的最新帖子,而在下面的单独循环中我希望显示给定类别WITH分页中的其余帖子,将循环偏移1。我已经搜索了很多方法来做到这一点,并没有找到解决方案!你可以为这个提供任何帮助,我会非常感激!先感谢您!这是我的代码:
<?php query_posts( 'cat=3&showposts=1&offset=0'); ?>
<?php while (have_posts()) : the_post(); ?>
<div class="firstPost">
Snipped post style
</div>
<div class="prevHeader">Previous Episodes</div>
<?php endwhile; ?>
<div class="container archiveContainer">
<?php
// set the "paged" parameter (use 'page' if the query is on a static front page)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
// the query
$the_query = new WP_Query( 'cat=3&posts_per_page=6&offset=1&paged=' . $paged );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php
// the loop
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<div class="prevEntries">
Snipped Post Style
</div>
<?php endwhile; ?>
</div>
<div style="width:100%">
<span style="display:inline-block; margin-left:10px; float:left" class="nav-previous"><?php next_posts_link( '<h4>Older posts</h4>', $the_query->max_num_pages ); ?></span>
<span style="display:inline-block; margin-left:10px; float:right" class="nav-next alignright"><?php previous_posts_link( '<h4>Newer posts</h4>' ); ?></span></div>
<?php
// clean up after the query and pagination
wp_reset_postdata();
?>
<?php endif; ?>
答案 0 :(得分:1)
这当然可以做到,但肯定不会用query_posts
。这样的情况,它将完全失败。此外,如果您不知道自己在做什么,抵消会破坏分页并且很难处理
我现在没有时间编写代码,但这是一个想法:
如果您需要在所有页面上显示最新帖子,则可以执行以下操作。
删除自定义查询和偏移量,以便一切正常。正常使用默认循环和分页
要在每个页面上显示您的第一篇帖子,请使用WP_Query
创建自定义查询,并将其放置在您需要显示此帖子的位置。请参阅有关如何正确构建该查询的链接。请不要使用query_posts
现在您将看到第一个帖子显示两次。要解决此问题,请将自定义查询包装在is_paged()
条件下。
修改强>
你可以尝试这样的事情。 ( PS!showposts
已弃用,请使用posts_per_page
。此外,您可以在设置paged
时删除offset
参数,因为它会被忽略 )
( CAVEAT 未经测试)
if( is_paged() ) {
$args = array(
'posts_per_page' => 1,
'cat' => 3,
);
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
// Display your loop elements
} //end while
wp_reset_postdata();
} // end if have_posts()
} //end if is_paged
// Now for your main loop
// set the "paged" parameter (use 'page' if the query is on a static front page)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$the_query = new WP_Query( 'cat=3&posts_per_page=6&paged=' . $paged );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
// Your loop elements
}
wp_reset_postdata();
}
答案 1 :(得分:0)
Codex声明:在查询中指定硬编码偏移可以并且打破分页,因为WordPress在内部使用偏移来计算和处理分页。
请参阅以下link。如页面所述,您需要使用钩子和过滤器。