我有一个博客,我需要第一篇文章作为精选帖子,因此我需要给该帖子一个特殊的风格。
这没问题,我用下面的代码实现了它
但是:
问题是,在第一个帖子下方,你会发现其余的每个都有两排4个帖子。
所以基本上我必须通过管理界面告诉wordpress给我每页9个帖子:精选帖子+两个4个帖子行= 9。
一切顺利,直到你进入第二页,其中没有特色帖子,你得到3行,2x4和1个尴尬的第3个帖子行(当然,我要求9 p / p)。
我已经阅读了很多关于这个问题的帖子,这些答案对我来说不够清楚。
问题:是否有可能获得带有wp_query的第一篇文章,然后是其余的正常循环,偏移量为1?
如果没有,还有其他简单方法吗?
看看here
<?php get_header(); ?>
<div class="container blog">
<div class="main-column clearfix">
<?php if (paginate_links()) : ?>
<div class="paginate">
<?php echo paginate_links();?>
</div>
<?php endif;?>
<?php
$primera = true;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if (have_posts()) :
while(have_posts()) : the_post();
if($primera == true && $paged == 1) { // IF first post AND first page
get_template_part('portada');
}
else {
get_template_part('blog');
}
$primera = false;
endwhile;
else : echo 'No content';
endif;
?>
</div>
<div class="paginate">
<?php echo paginate_links();?>
</div>
<?php get_footer(); ?>
答案 0 :(得分:1)
我建议您限制代码中的帖子数量,而不是来自管理面板。所以,当你检查它的第一页是否你查询9个帖子,但如果它的其他页面你只查询8个帖子。一些示例代码是(尚未经过测试)
<?php
$primera = true;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
if($paged == 1){
query_posts( 'posts_per_page=9' );
}else{
query_posts( 'posts_per_page=8' );
}
if (have_posts()) :
while(have_posts()) : the_post();
if($primera == true && $paged == 1) { // IF first post AND first page
get_template_part('portada');
}
else {
get_template_part('blog');
}
$primera = false;
endwhile;
else : echo 'No content';
endif;
?>
循环之前查找更多查询帖子示例
答案 1 :(得分:0)
这是我必须要做的就是能够使用这样的query_posts来使用paginate_links()函数:
if($paged == 1){
global $wp_query;
query_posts(
array_merge(
array(
'posts_per_page' => 9
),
$wp_query->query
)
);
} else {
global $wp_query;
query_posts(
array_merge(
array(
'posts_per_page' => 8
),
$wp_query->query
)
);
}