posts_nav_link()在单击链接时不显示更多帖子

时间:2017-11-22 21:48:44

标签: php wordpress

我在WordPress中有一个自定义模板页面,我试图让列表后的分页工作正常。我在循环之后使用了posts_nav_link(),它确实显示了“上一页”和“下一页”链接,但是当它们被点击时它不会加载任何新帖子。 URL显示它正在分页(通过显示... / page / 2和... / page / 3等...)但是每个被分页的页面仍然具有相同的10个帖子。

自定义页面模板的代码是:

<div class="content content-page">
    <main class="site-main">

        <?php
            $custom_loop = new WP_Query( array(
                'post_type'      => 'post',
                'order'          => 'DESC',
                'orderby'        => 'date',
                'category_name' =>  'Arcology Podcast'
            ) );
        ?>

         <?php 
        // Start the Loop
        if ( $custom_loop->have_posts() ) { 
            while ( $custom_loop->have_posts() ) { 
                $custom_loop->the_post(); 
                // Include the page content
                get_template_part( 'content', 'page' );
                ?>
                <hr/>
                <?php
            }
            next_posts_link("Older Entries", $custom_loop->max_num_pages);
            previous_posts_link("Newer Entries");
        }
        // End the Loop
        wp_reset_postdata();
        ?>

    </main>
</div>

1 个答案:

答案 0 :(得分:0)

我设法找到了解决问题的方法,因此我将其张贴在这里以造福他人:

问题是paged对象中未设置WP_Query参数,因此查询无法知道要显示的帖子页面。当然,它默认为第1页,所以每次我点击&#34;旧条目&#34;链接,它将重新加载页面并获取paged参数定义的默认页面(即每次都加载第一页)。

解决方案是在paged对象中设置WP_Query参数。您可以致电get_query_var('paged')查看当前页面。所以解决方案看起来像这样:

<div class="content content-page">
    <main class="site-main">

        <?php
            $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

            $custom_loop = new WP_Query( array(
                'paged'         =>  $paged,
                'post_type'      => 'post',
                'order'          => 'DESC',
                'orderby'        => 'date',
                'category_name' =>  'Arcology Podcast'
            ) );
        ?>

        <?php 
        // Start the Loop
        if ( $custom_loop->have_posts() ) { 
            while ( $custom_loop->have_posts() ) { 
                $custom_loop->the_post(); 
                // Include the page content
                get_template_part( 'content', 'page' );
                ?>
                <hr/>
                <?php
            }
            next_posts_link("Older Entries", $custom_loop->max_num_pages);
            previous_posts_link("Newer Entries");
        }
        // End the Loop
        wp_reset_postdata();
        ?>

    </main>
</div>