我正在开发一个使用安德斯特的起始主题的网站。我想在home.php上使用一个分割设计,其中最新的帖子显示在其他“全宽度”的顶部,而其余的则位于三列布局的下面。
多亏了这个非常有用的帖子,它工作得完美无缺。
然而,现在我有一个hard时间让分页工作与修改后的循环结合使用。没有做任何事情,分页显示在页面的底部,但是当我按下链接时,同样的页面就出现了。
这是我的密码:
10
];
$q = new WP_Query($args);
if ($q->have_posts()) {
while ($q->have_posts()) {
$q->the_post();
if ($q->current_post < 1) { ?>
Läs hela texten
rewind_posts();
while ($q->have_posts()) {
$q->the_post();
if ($q->current_post >= 1 && $q->current_post <= 10) { ?>
rewind_posts();
while ($q->have_posts()) {
$q->the_post();
if ($q->current_post > 10) { ?>任何帮助都很感激!谢谢。
发布于 2021-06-23 16:38:31
这个问题与rewind_posts()无关。同样的帖子出现在第2页的原因是因为你的模板只会显示最新的10个帖子。这是因为您使用自己的辅助查询来显示帖子:
$args = [
'posts_per_page' => 10
];
$q = new WP_Query($args);这就是你的模板正在显示的查询,当你在第二页的时候,没有任何东西告诉它去查询第二页的帖子。
问题是,在home.php中,您不应该使用new WP_Query()查询循环的posts。WordPress已经为您查询了正确的帖子,您可以用环路显示它们。
您复制的解决方案之所以使用它,是因为它回答的最初问题显然是关于在静态主页模板上显示这些帖子,该模板还没有查询正确的帖子,并且不需要分页。
另外,最初的答案使用rewind_posts()的原因是,它似乎是用于显示不同的帖子组。这不是你想要的。您所要做的就是分别显示第一个帖子,然后再显示其余的帖子,而不重新显示第一个帖子。
考虑到所有这些,正确的解决方案是使用这种结构:
global $wp_query;
while ( have_posts() ) {
the_post();
// If we're on the first post.
if ( 0 === $wp_query->current_post ) {
// Display post as banner.
break;
}
}
// Display separator, open grid, etc.
while ( have_posts() ) {
the_post();
// Display post as card.
}
understrap_pagination();发布于 2021-06-23 14:39:41
我想试一试,希望能帮上忙。我觉得这里发生了几件事。
首先,我认为您可以完成您的布局,而不需要倒带循环。进行此更改将有助于澄清您的代码,并帮助我们隔离您在分页中遇到的问题。请参阅下面发布的代码的修订版,以了解如何消除倒带。基本上,当current_post属性为1时,您可以添加一个额外的条件,在card部分周围添加包装div。
其次,我稍微更改了您的查询。我添加了“分页”参数。我还导致它覆盖全局$wp_query变量。这使wordpress认为您的自定义查询是主要查询,wordpress将相应地显示分页。有关如何工作的更多信息,您可以阅读这篇文章。
我在本地机器上测试了下面的代码。我没有底片,所以我没有检查css看起来是否正常,我不得不使用标准的wordpress分页功能而不是understrap_pagination。不过,html和导航功能似乎运行得很好。
$args = [
'posts_per_page' => 10,
'paged' => get_query_var( 'paged' ),
];
global $wp_query;
$wp_query = new WP_Query($args);
if ($wp_query->have_posts()) {
while ($wp_query->have_posts()) {
$wp_query->the_post();
if ($wp_query->current_post < 1) { ?>
Läs hela texten
current_post ){ ?>
current_post >= 1 && $wp_query->current_post <= 10) { ?>https://wordpress.stackexchange.com/questions/390913
复制相似问题