首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rewind_posts()会导致分页中断

使用rewind_posts()会导致分页中断
EN

WordPress Development用户
提问于 2021-06-23 11:10:46
回答 2查看 79关注 0票数 0

我正在开发一个使用安德斯特的起始主题的网站。我想在home.php上使用一个分割设计,其中最新的帖子显示在其他“全宽度”的顶部,而其余的则位于三列布局的下面。

多亏了这个非常有用的帖子,它工作得完美无缺。

然而,现在我有一个hard时间让分页工作与修改后的循环结合使用。没有做任何事情,分页显示在页面的底部,但是当我按下链接时,同样的页面就出现了。

这是我的密码:

代码语言:javascript
复制
 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) { ?>

任何帮助都很感激!谢谢。

EN

回答 2

WordPress Development用户

回答已采纳

发布于 2021-06-23 16:38:31

这个问题与rewind_posts()无关。同样的帖子出现在第2页的原因是因为你的模板只会显示最新的10个帖子。这是因为您使用自己的辅助查询来显示帖子:

代码语言:javascript
复制
$args = [
   'posts_per_page' => 10
];

$q = new WP_Query($args);

这就是你的模板正在显示的查询,当你在第二页的时候,没有任何东西告诉它去查询第二页的帖子。

问题是,在home.php中,您不应该使用new WP_Query()查询循环的posts。WordPress已经为您查询了正确的帖子,您可以用环路显示它们。

您复制的解决方案之所以使用它,是因为它回答的最初问题显然是关于在静态主页模板上显示这些帖子,该模板还没有查询正确的帖子,并且不需要分页。

另外,最初的答案使用rewind_posts()的原因是,它似乎是用于显示不同的帖子组。这不是你想要的。您所要做的就是分别显示第一个帖子,然后再显示其余的帖子,而不重新显示第一个帖子。

考虑到所有这些,正确的解决方案是使用这种结构:

代码语言:javascript
复制
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();
票数 0
EN

WordPress Development用户

发布于 2021-06-23 14:39:41

我想试一试,希望能帮上忙。我觉得这里发生了几件事。

首先,我认为您可以完成您的布局,而不需要倒带循环。进行此更改将有助于澄清您的代码,并帮助我们隔离您在分页中遇到的问题。请参阅下面发布的代码的修订版,以了解如何消除倒带。基本上,当current_post属性为1时,您可以添加一个额外的条件,在card部分周围添加包装div。

其次,我稍微更改了您的查询。我添加了“分页”参数。我还导致它覆盖全局$wp_query变量。这使wordpress认为您的自定义查询是主要查询,wordpress将相应地显示分页。有关如何工作的更多信息,您可以阅读这篇文章

我在本地机器上测试了下面的代码。我没有底片,所以我没有检查css看起来是否正常,我不得不使用标准的wordpress分页功能而不是understrap_pagination。不过,html和导航功能似乎运行得很好。

代码语言:javascript
复制
$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) { ?>
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/390913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档