WordPress 中的自定义帖子分页
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2800+ 小伙伴加入学习 ,欢迎点击围观
如果您在 WordPress 中处理大量自定义帖子并且您是主题开发人员,那么这对您来说可能是一个众所周知的问题。很多人在不同的论坛上讨论这个分页的事情。但是,对自定义帖子进行分页实际上并不难。让我们看看如何轻松地做到这一点。
查询 CPT
这是您需要做的第一件事,就是编写自定义查询。因为当您的收藏中有一堆帖子时,您将开始考虑分页。所以是时候找一些帖子了。下面的代码会找到帖子类型 book 的所有帖子并显示它们的标题
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
现在您可能会使用旧的
next_posts_link()
来显示下一页。好吧,那是行不通的,因为此时
next_posts_link()
不知道那里有多少页。因此,要使其正常工作,您必须传递查询找到的总页数。请问这个总页数是怎么计算的?
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
有趣的是,您不需要像这样计算总页数。 WP_query 对象已经为您做了这件事,并通过
max_num_pages
属性使其可用。
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
现在我们需要该值来显示到下一页的链接。像这样将它传递给
next_posts_link()
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
现在它将显示一个有效链接,可以将您带到以前的帖子页面。如果你的 url 是
http://yoursite.com/books/
那么之前帖子的链接将是这种格式
http://yoursite.com/books/page/2
。因此,您将需要在 PHP 脚本中使用此页码来从该页面获取所有帖子(或 CPT)。在您的主题中,您可以使用名为
paged
的查询变量获取此页码。以下代码将正确获取当前页码
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
要从此页面获取所有帖子,您只需要像这样重写 WP_Query
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
如果您想使用页码查看传统分页,则必须使用以下代码
$books = new WP_Query( array(
"posts_per_page" => - 1,
"post_type" => "book"
) );
while ($books->have_posts()){
$books->the_post();
the_title();
echo "<br/>";
}
你完成了:)