页面之间的帖子数量不同。选项

时间:2018-02-08 07:51:25

标签: wordpress posts

我有一个博客,我需要第一篇文章作为精选帖子,因此我需要给该帖子一个特殊的风格。 这没问题,我用下面的代码实现了它 但是:
问题是,在第一个帖子下方,你会发现其余的每个都有两排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(); ?>

2 个答案:

答案 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;
    ?>

您可以在https://codex.wordpress.org/The_Loop

循环之前查找更多查询帖子示例

答案 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
                )
            );
        }