Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php wordpress分页返回第2页的空白页(从头开始构建主题)_Php_Wordpress_Twitter Bootstrap_Pagination_Wordpress Theming - Fatal编程技术网

Php wordpress分页返回第2页的空白页(从头开始构建主题)

Php wordpress分页返回第2页的空白页(从头开始构建主题),php,wordpress,twitter-bootstrap,pagination,wordpress-theming,Php,Wordpress,Twitter Bootstrap,Pagination,Wordpress Theming,为了学习wordpress开发,我从头开始构建wordpress主题。 现在我想在我的分类页面上添加分页,但问题是: 当我点击较旧的帖子链接时,url从“”变为“”,但它会将我带到一个空白页面,而不是显示其他帖子 这是category.php上的代码 <?php get_header(); ?> <div class="container"> <?php $counter = 1; //start counter $grids =

为了学习wordpress开发,我从头开始构建wordpress主题。 现在我想在我的分类页面上添加分页,但问题是: 当我点击较旧的帖子链接时,url从“”变为“”,但它会将我带到一个空白页面,而不是显示其他帖子

这是category.php上的代码

    <?php get_header(); ?>

     <div class="container">
  <?php
  $counter = 1; //start counter

  $grids = 3; //Grids per row

  global $query_string; //Need this to make pagination work


  /*Setting up our custom query (In here we are setting it to show 12 posts per page and eliminate all sticky posts) */
  query_posts($query_string . '&caller_get_posts=1&posts_per_page=4');


  if(have_posts()) :   while(have_posts()) :  the_post(); 
  ?>
  <?php
  //Show the left hand side column
  if($counter == 1) :
  ?>
  <div class="row">
           <div class="col-md-4">
             <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(); ?></h4>
           </div>
           </div>
  <?php

  elseif($counter == 2) :
  ?>
  <div class="col-md-4 border2">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(); ?></h4>
           </div>
           </div>

  <?php
  elseif($counter == $grids) :
  ?>
  <div class="col-md-4">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(); ?></h4>
           </div>
           </div>
  </div>
  <div class="clear"></div>
  <?php
  $counter = 0;
  endif;
  $counter++;
  endwhile;
  ?>


      <div class="row">
      <div class="col-xs-6 text-left">
         <?php next_posts_link('<< Older post'); ?>
      </div>
      <div class="col-xs-6 text-right">
         <?php previous_posts_link('Newer post >>'); ?>
      </div>


  <?php
  endif;
  ?>

  </div>
  </div>

  <?php get_footer(); ?>
<?php get_header(); ?>

     <div class="container">
  <?php
  $counter = 1; //start counter

  $grids = 3; //Grids per row



  if(have_posts()) :  
     while(have_posts()) :  the_post(); 


  ?>
  <?php
  //Show the left hand side column
  if($counter == 1) :
  ?>
  <div class="row">
           <div class="col-md-4">
             <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(' '); ?></h4>
           </div>
           </div>
  <?php

  elseif($counter == 2) :
  ?>
  <div class="col-md-4 border2">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(' '); ?></h4>
           </div>
           </div>

  <?php
  elseif($counter == $grids) :
  ?>
  <div class="col-md-4">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(' '); ?></h4>
           </div>
           </div>
  </div>
  <div class="clear"></div>
  <?php
  $counter = 0;
  endif;
  ?>

  <?php
  $counter++;
  endwhile;
   ?>

              <div class="row">

                  <div class="col-xs-12 text-left ">
                     <?php next_posts_link('<< Older post'); ?>
                  </div>
                  <div class="col-xs-12 text-right ">
                     <?php previous_posts_link('Newer post >>'); ?>
                  </div>

              </div>



  <?php
  endif;
  ?>
     </div>

  <?php get_footer(); ?>
此外,在分类页面上,较旧的帖子链接显示在行之间,而不是显示在页面底部。

最后,这是我index.php上的代码

<?php get_header(); ?>
<div class="container">
   <div class="row">
      <div class="col-xs-12 col-sm-8">  
         <?php 



         if(have_posts()):
                while(have_posts()): the_post(); ?>



                    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">

                        <h3><?php the_title(); ?></h3>
                     <small><?php the_category(); ?></small>

                    </a>            

                    <p><?php the_content(); ?></p>
                    <hr/>


            <?php   endwhile;
            endif;

          ?>
      </div>

      <div class="col-xs-12 col-sm-4">
      <?php get_sidebar(); ?>
      </div>

   </div>
</div>



<?php get_footer(); ?>



谢谢。

使用此代码,可能会解决您的问题

<?php 
// the query to set the posts per page to 3
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('posts_per_page' => 3, 'paged' => $paged );
query_posts($args); ?>
<!-- the loop -->
<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
        <!-- rest of the loop -->
        <!-- the title, the content etc.. -->
<?php endwhile; ?>
<!-- pagination -->

<div class="row">
  <div class="col-xs-12>"
    <div class="col-xs-6 text-left"><?php next_posts_link(); ?></div>
    <div class="col-xs-6 text-right"><?php previous_posts_link(); ?></div>
  </div>
</div>
<?php else : ?>
<!-- No posts found -->
<?php endif; wp_reset_postdata(); ?>


有关更多详细信息,请查看此链接

经过大量搜索,我终于找到了解决方案。 问题是wordpress阅读设置中的“Blog pages show至多”干扰了我通过查询发布()声明的“posts\u per\u page=4”。 解决方案:

我删除了“query\u posts()”,因为最好使用WP\u query()或pre\u get\u posts过滤器。 对我来说,即使使用wp_查询,我也无法让分页工作,所以我尝试使用pre_get_posts过滤器,它工作了。 因此,在category.php中,我删除了query_帖子,只使用了普通循环

这是我在category.php中的新代码

    <?php get_header(); ?>

     <div class="container">
  <?php
  $counter = 1; //start counter

  $grids = 3; //Grids per row

  global $query_string; //Need this to make pagination work


  /*Setting up our custom query (In here we are setting it to show 12 posts per page and eliminate all sticky posts) */
  query_posts($query_string . '&caller_get_posts=1&posts_per_page=4');


  if(have_posts()) :   while(have_posts()) :  the_post(); 
  ?>
  <?php
  //Show the left hand side column
  if($counter == 1) :
  ?>
  <div class="row">
           <div class="col-md-4">
             <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(); ?></h4>
           </div>
           </div>
  <?php

  elseif($counter == 2) :
  ?>
  <div class="col-md-4 border2">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(); ?></h4>
           </div>
           </div>

  <?php
  elseif($counter == $grids) :
  ?>
  <div class="col-md-4">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(); ?></h4>
           </div>
           </div>
  </div>
  <div class="clear"></div>
  <?php
  $counter = 0;
  endif;
  $counter++;
  endwhile;
  ?>


      <div class="row">
      <div class="col-xs-6 text-left">
         <?php next_posts_link('<< Older post'); ?>
      </div>
      <div class="col-xs-6 text-right">
         <?php previous_posts_link('Newer post >>'); ?>
      </div>


  <?php
  endif;
  ?>

  </div>
  </div>

  <?php get_footer(); ?>
<?php get_header(); ?>

     <div class="container">
  <?php
  $counter = 1; //start counter

  $grids = 3; //Grids per row



  if(have_posts()) :  
     while(have_posts()) :  the_post(); 


  ?>
  <?php
  //Show the left hand side column
  if($counter == 1) :
  ?>
  <div class="row">
           <div class="col-md-4">
             <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(' '); ?></h4>
           </div>
           </div>
  <?php

  elseif($counter == 2) :
  ?>
  <div class="col-md-4 border2">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(' '); ?></h4>
           </div>
           </div>

  <?php
  elseif($counter == $grids) :
  ?>
  <div class="col-md-4">
     <div class="center">
              <div class="postimage">
                 <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_custom_logo(); ?></a>
              </div>
                  <h2><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                  <h4><?php the_category(' '); ?></h4>
           </div>
           </div>
  </div>
  <div class="clear"></div>
  <?php
  $counter = 0;
  endif;
  ?>

  <?php
  $counter++;
  endwhile;
   ?>

              <div class="row">

                  <div class="col-xs-12 text-left ">
                     <?php next_posts_link('<< Older post'); ?>
                  </div>
                  <div class="col-xs-12 text-right ">
                     <?php previous_posts_link('Newer post >>'); ?>
                  </div>

              </div>



  <?php
  endif;
  ?>
     </div>

  <?php get_footer(); ?>
我希望我的答案能帮助那些有着与我同样问题的人,即使我的答案没有得到很好的解释。 有关更多信息,请搜索以下内容: 对wp_查询使用分页 使用pre_get_posts为自定义页面设置分页


如果开发人员能够更详细地解释我的解决方案,并向我们提供有关使用pre_get_posts设置自定义页面分页的更多信息,那就太好了。

您好,谢谢您的帮助。事实上,我刚刚发现了问题所在。wordpress阅读设置中的“Blog pages show至多”干扰了我通过查询发布()声明的posts\u per\u page=4。我将在下面发布此问题的解决方案。我刚刚发布了一个解决方案,如果您能更详细地解释它,请这样做,以便有相同问题的人能够更好地理解。谢谢。pre_get_发布了一个钩子,该钩子在创建查询变量对象之后,但在实际查询运行之前调用。您不必因为使用引用而返回某些内容。pre_get_posts钩子运行其后端do_action_ref_数组('pre_get_posts',WP_Query)函数。如果你想知道更多的细节,那么点击这个链接