显示5个帖子和3个以上的帖子,并用分页进行偏移

时间:2018-01-09 作者:user2537485

我正在尝试用不同的样式显示前5篇文章,然后用不同的样式显示下3篇文章。他们还需要工作分页。

在我的阅读设置中,我已将显示的帖子数设置为6。

我设法用query\\u帖子做到了这一点,但我不知道这是否正确。

    <?php if (have_posts()) : ?>

        <div class="posts-wrap">
            <div class="grid">

                <?php while (have_posts()) : the_post(); ?>

                    <?php
                    get_template_part(\'template-parts/content\', get_post_format());
                    ?>

                <?php endwhile; ?>

            </div>
        </div>

    <?php endif; ?>

    <?php
    $page_num = $paged;

    if ($page_num === 0) :
        $page_num = $page_num + 3;
        query_posts(\'showposts=3&offset=5&paged=\' . $page_num);
    else :
        query_posts(\'showposts=3&paged=\' . $page_num);
    endif;

    ?>

    <?php if (have_posts()) : ?>

    <div class="more">
        <div class="all-by-date">
            <h2>Browse Archives</h2>
            <ul>
            <?php wp_get_archives([\'type\' => \'monthly\', \'limit\' => 12]); ?>
            </ul>
        </div>
        <div class="posts-wrap">
            <?php while (have_posts()) : the_post(); ?>

                <?php
                get_template_part(\'template-parts/content\', \'single-preview\');
                ?>

            <?php endwhile; ?>
        </div>
    </div>

    <?php $page_num = $paged; ?>
    <?php query_posts(\'offset=8&paged=\' . $paged); ?>
    <?php numbered_pagination_links(); ?>

    <?php endif; ?>
我想知道有没有更好的方法?

1 个回复
最合适的回答,由SO网友:Michael 整理而成

在下面settings - reading, 将“博客页面最多显示”设置为8

然后根据循环中的当前post编号使用条件语句;

    <?php if (have_posts()) : ?>

                <?php while (have_posts()) : the_post(); ?>

<?php 
//conditionally outputting the opening tags for the first section
if( $wp_query->current_post == 0 ) { ?>
        <div class="posts-wrap">
            <div class="grid">
<?php } 
//conditionally outputting the template part                    
                    if( $wp_query->current_post <= 4 ) get_template_part(\'template-parts/content\', get_post_format());

//conditionally outputting the closing tags
if( $wp_query->current_post == 4 || $wp_query->current_post < 4 && $wp_query->current_post == $wp_query->post_count-1 ) { ?>

            </div>
        </div>
<?php } 

//conditionally outputting the opening tags for the second section
if( $wp_query->current_post == 5 ) { ?>
    <div class="more">
        <div class="all-by-date">
            <h2>Browse Archives</h2>
            <ul>
            <?php wp_get_archives(array(\'type\' => \'monthly\', \'limit\' => 12)); ?>
            </ul>
        </div>
        <div class="posts-wrap">
<?php }                 
//conditionally outputting the template part
                    if( $wp_query->current_post > 4 ) get_template_part(\'template-parts/content\', \'single-preview\');
                    ?>
<?php //conditionally outputting the closing tags
if( $wp_query->current_post == 7 || $wp_query->current_post > 4 && $wp_query->current_post == $wp_query->post_count-1 ) { ?>

        </div>
    </div>
<?php } ?>      
                <?php endwhile; ?>

    <?php numbered_pagination_links(); ?>

    <?php endif; ?>
它可能看起来更复杂,但您不需要担心分页。如果您想显示存档链接,即使没有更多帖子,也需要修改代码。

结束

相关推荐

将WP_QUERY限制为仅X个结果(总计,而不是每页)

如何将WP\\u查询限制为仅获取5个结果?我的意思是,实际上每页只有5条结果,而不是5条帖子。这How to limit the number of posts that WP_Query gets?提供一些可供使用的见解和建议no_found_rows=true 但您是将其用于每页的posts\\u,还是需要将结果限制在其他地方?在我的情况下(搜索)get_posts 不起作用,因为我需要提供搜索查询。