【问题标题】:Why are no pagination links displaying in this WordPress template?为什么这个 WordPress 模板中没有显示分页链接?
【发布时间】:2017-02-07 20:52:11
【问题描述】:

我无法理解甚至诊断为什么在我的 27 岁儿童主题中创建的 home.php 文件中没有显示分页。我有 3 篇博文,我只想显示一篇,底部有分页。

我正在运行 WordPress 4.7.2,根据this 文章,我应该使用 the_posts_pagination() 来显示我的帖子的分页,但没有出现任何内容。我已经按照here 的描述设置了一个自定义查询(将参数作为数组而不是查询字符串传递):

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

$query = new WP_Query( array( 'posts_per_page' => 1, 'paged' => $paged ) );

有 3 个帖子,如果我将查询设置为此,那么我会在 home.php 页面上看到所有三个帖子:

$query = new WP_Query( array( 'posts_per_page' => 3, 'paged' => $paged ) );

当我将 'posts_per_page' 设置为 1,然后调用 the_posts_pagination() 时,我只看到第一个帖子,没有分页。我不明白为什么没有出现分页,因为还有更多页面要显示。不过,我对 WordPress 还是很陌生,所以我确定我只是遗漏了一些明显的东西。

这是我的完整代码供参考:

<?php

get_header(); 

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

$query = new WP_Query( array( 'posts_per_page' => 1, 'paged' => $paged ) );

?>

<div class="wrap">
    <div id="primary" class="content-area">
        <main id="main" class="site-main" role="main">

            <?php

            if ( $query->have_posts() ) :

                /* Start the Loop */
                while ( $query->have_posts() ) : $query->the_post();

                    the_title('<h1>', '</h1>');
                    the_content();

                endwhile;

                the_posts_pagination();

            else :

                get_template_part( 'template-parts/post/content', 'none' );

            endif;

            ?>

        </main><!-- #main -->
    </div><!-- #primary -->
</div><!-- .wrap -->

<?php get_footer();

问题回答后编辑

好的,看来即使我设置了我想在此处显示的“posts_per_page”:

$query = new WP_Query( array( 'posts_per_page' => 1, 'paged' => $paged ) );

Wordpress 仍然依靠 Dashboard->Settings->Reading->博客页面最多显示 中的设置来确定分页,所以我不得不进去并设置它。我仍然无法让 the_posts_pagination 正常工作,但是这样做了:

previous_posts_link( ' << Newer Entries ' );
next_posts_link( ' Older Entries >> ', $query->max_num_pages);

【问题讨论】:

  • @EdDogan 感谢您的文章,这有助于我了解分页与分页的区别。我认为我正确使用了分页,因为这是一个博客文章索引页面(home.php),对吗?如果我删除条件语句并只获得“分页”查询变量,我仍然会得到相同的结果。
  • 如果使用&lt;?php next_posts_link(); ?&gt;&lt;?php previous_posts_link(); ?&gt;等其他分页功能,结果是否一样
  • @EdDogan 是的,我最初尝试这些是因为我遵循较旧的教程,但后来发现了使用 the_post_pagination() 的新材料

标签: php wordpress pagination


【解决方案1】:

the_posts_pagination() 无法识别您的新查询,但它正在读取存储在 $GLOBALS['wp_query'] 中的全局 wp_query。

管理面板中设置>阅读下的博客页面最多显示设置是此处用作posts_per_page的设置。

您可以在this article 中找到一些修改默认查询的不同方法。

【讨论】:

  • 奇怪的是,即使获取帖子的查询通过新 WP_Query 中的“posts_per_page”设置工作,我仍然必须进入设置才能使分页工作。到目前为止,WordPress 很奇怪!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2021-06-27
相关资源
最近更新 更多