如果您在 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/>";
}
你完成了:)