我在一个WordPress网站上工作,我已经创建了一个页面模板,通过类别slug显示帖子。为此,我为页面创建了一个字段WP_Catid,并将其设置为我想要显示帖子的类别slug。然而,我只希望每页显示五个帖子,并在这些帖子的底部显示分页链接。如何正确显示分页链接?
代码如下:
<div id="container">
<div id="content" role="main">
<?php
$btpgid=get_queried_object_id();
$btmetanm=get_post_meta( $btpgid, 'WP_Catid','true' );
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'posts_per_page' => 5,
'category_name' => $btmetanm,
'paged' => $paged,
'post_type' => 'post' );
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post );
echo "<div style='border:2px groove black; margin-bottom:5px;'><h3 class='btposth'>";
the_title();
echo "</h3><div class='btpostdiv'>";
the_content();
echo "</div></div>";
endforeach;
next_posts_link( 'Older Entries'); //not displaying
previous_posts_link('Newer Entries »'); //not displaying
wp_reset_postdata();
?>
</div><!-- #content -->
</div><!-- #container -->
6条答案
按热度按时间o2rvlv0m1#
简单来说,如果你需要分页查询,不要使用
get_posts
。如果你要使用一个不需要分页的自定义查询,get_posts
可以很好地工作,但是当你需要引入分页时,它真的会变得很复杂。我认为这里最简单和最合适的方法是使用
WP_Query
来构造您的自定义查询,也就是说,如果您不能使用pre_get_posts
来改变主查询以从主查询中获得所需的输出。我认为
next_posts_link()
和previous_posts_link()
更适合用于自定义查询,即WP_Query
。但是,当您使用自定义查询时,您必须记住设置$max_pages
参数,否则您的分页将中断通过一些小的调整,您的查询应该如下所示
anhgbhbe2#
Pieter Goosen's answer是完全正确的,他建议使用
WP_Query
是最有意义的。然而,我在循环外寻找get_posts
分页时偶然发现了这个问题,所以我想这对其他人来说也是一个有用的替代方案:get_posts
有一个直接属性offset
,它实现了与WP_Query
中的paged
几乎相同的功能;但是其中paged
指的是分页(例如 1,2,3),offset
是你想要偏移查询的实际 * 文章数量 *(例如 5,10,15)。通过一点数学运算-numberToShow * pageNumber
-你可以很容易地得到正确的偏移量:本例中的初始
paged
值是0
而不是1
,因为当乘以posts_per_page
时,您希望初始偏移量是0
而不是5
。如果您想要更细粒度的控制而不是简单的分页,这可能是最方便的,但与接受的答案中的循环结合使用也应该同样有效。
yhqotfr83#
尝试更改$args:
在loop之后,我们会这样写:
gojuced74#
我不会告诉你使用get_posts()是正确的做法...但这里是我使用get_posts()设置的一些基本分页代码。
编辑:正如Pieter指出的那样,这并不意味着要在生产代码中使用。但无论如何,我只是在尝试使用get_posts()来查看是否可以使用分页。如果您在生产环境中,您不会想要使用它。
我希望有人能从中得到一些好处:)
编辑:管他呢!用错误的方式做一些事情...还不如把它做对!这里也有一些更少的(没有任何mixin)。
pbossiut5#
WordPress文章分页码(新增)
复制并粘贴这段代码,并享受它。:)
s4n0splo6#
//分页函数