【问题标题】:WordPress Blog Pagination Not WorkingWordPress博客分页不起作用
【发布时间】:2015-12-19 14:25:53
【问题描述】:

我还在纠结这个问题..

我的 WordPress 博客上的分页无法正常工作 - http://www.example.com/news

当您单击不同的页码时,它会正确更新 URL(和页面标题),但不会显示不同的帖子。

我试过了:

  • 禁用所有插件
  • 更改永久链接结构
  • 更改设置>阅读中显示的博客文章数量​​li>
  • http://www.example.com/recall-news 更改为其他路径以避免与名为“新闻”的帖子类别冲突

没有什么对我有用。

我见过很多自定义查询的解决方案,但我使用的是您在设置>阅读>帖子页面中设置的帖子页面,因此我没有编写任何代码来在此页面上显示帖子。

  • 在这种情况下,我应该修改什么 WordPress 文件来修复博客分页?我猜我可以在functions.php中添加一些东西,但我还没有找到解决方案。

更新:我还没有找到解决方案。我知道我可以通过编写自己的查询来做到这一点,但我想坚持使用默认的 WP 博客。

【问题讨论】:

  • 这正是在哪个模板/页面上。另外,发布您的模板代码。
  • 您绝对不需要自定义查询。但是,我们需要您提供主题模板中呈现recall-news 页面的代码。没有它,我们就无法解决问题或提供帮助。

标签: php wordpress pagination blogs


【解决方案1】:

在 category.php 文件(又名 archive.php)中检查您的 WP 循环。它必须包含以下内容:

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

并完成:

endwhile; endif;

【讨论】:

  • 对不起?你能帮我扩展一下吗?
【解决方案2】:

无法保证您的问题与 WordPress 相关。但是,因为您没有给出一个非常笼统的问题,所以我将给您一个非常笼统的答案。这应该有助于您找出问题所在并自行解决。

  1. 查看underscores。下载它并查看模板(如index.phparchive.php 等),看看您是否遗漏了下划线所包含的内容。下划线的好处是它是创建运行主题所需的所有基本内容,没有多余的装饰。因此,如果它存在并且不在您的代码中,则可能值得探索。请特别注意与have_posts 相关的任何代码块。

  2. 您的主题实际上可能没有任何问题。 尝试测试另一个主题(例如,您已方便下载的下划线)以查看其分页是否正常工作。如果是这样,那么你很幸运......这意味着你只需要更深入地挖掘来协调你的代码与下划线正确的问题。

  3. 如果您发现不是您的主题有问题,而是您的服务器配置有问题,那么这也是一种解脱,说起来也很轻松。这意味着理论上您应该能够在其他地方测试您的安装,或者重新安装您的服务器并使其正常工作。在此之前,请尝试简单地重新安装您的 WordPress 版本。谁知道...它可以工作。

【讨论】:

    【解决方案3】:

    您应该在 query_post 函数中传递“page”/“paged”变量:

    if ( get_query_var('paged') ) {
     $paged = get_query_var('paged');
    } elseif ( get_query_var('page') ) {
     $paged = get_query_var('page');
    } else {
     $paged = 1;
    }
    query_posts(array('paged' => $paged));
    if (have_posts()) : while ( have_posts() ) : the_post(); ?>
    <!--Your HTML-->.
    <?php endwhile; endif;  wp_reset_query(); ?>
    

    【讨论】:

      【解决方案4】:

      我也玩过“帖子页面”,但没有得到任何结果。

      对我来说唯一可行的解​​决方案是结合 Page-Navi 插件的客户查询。

      在我的模板中,我有以下代码:

          <?php
          $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
          $args = array(
              'post_type'         => 'post',
              'orderby'           => 'date',
              'order'             => 'DESC',
              'post_status'       => 'publish',
              'posts_per_page'    => 5,
              'paged'             => $paged,
          );
          $q = new WP_Query( $args );
      
          if ( $q->have_posts() ) {
              $displaylist = '<div class="list-group">';
      
              while ( $q->have_posts() ) {
                  $q->the_post();
      
                  // build up your entry
      
                  unset( $displayTag );
              }
      
              $displaylist .= '</div>';
      
              echo( $displaylist );
      
              wp_pagenavi( array( 'query' => $q ) );
      
              wp_reset_postdata();
          }
      ?>
      

      使用post_per_page 我管理每个站点的条目。在 while 循环中,我构建了应该显示的条目。

      【讨论】:

        【解决方案5】:

        您可以尝试使用Wp-Pagenavi 来生成分页吗?这样我们至少可以检查问题是默认分页还是只是编码中的一些错误没有正确填充分页变量

        【讨论】:

        • 为什么要使用默认分页插件? the_posts_pagination() 或 get_the_posts_pagination() 已经可以从核心 paginate_links() 中使用。
        • 更多插件 > 增加页面负载和数据库获取...所以尽可能使用 wp 核心方法...
        【解决方案6】:

        试试这个

            global $wpdb;
        
            $pagenum = isset( $_GET['pagenum'] ) ? absint( $_GET['pagenum'] ) : 1;
            $limit = 20;
            $offset = ( $pagenum - 1 ) * $limit;
            //$entries = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}design_information LIMIT $offset, $limit" );
             $entries = $wpdb->get_results("Select * From design_information ORDER BY id DESC LIMIT $offset, $limit",ARRAY_A);
        
        echo '<div class="wrap">';
        <table class="widefat">
            <thead>
                <tr>
                   <th>SNo.</th><th>Layout</th><th>Org Description</th>
                </tr>
            </thead>
        
            <tbody>
                <?php if( $entries ) { ?>
        
                    <?php
                    $count = 1;
                    $class = '';
            //echo "<pre>";
            //print_r($entries);
            for($i=0;$i<count($entries); $i++)
            {
        
        $pid=$entries[$i]['id'];
                        $class = ( $count % 2 == 0 ) ? ' class="alternate"' : '';
                  ?>
                    <tr<?php echo $class; ?>>
                        <td>
                      <?php echo $entries[$i]['id'];
                        //echo $count; 
                        $count++;?>
                  </td>
        <td>
              <?php echo $entries[$i]['layout'];?>
          </td>
          <td> 
              <?php echo $entries[$i]['org_description'];?>
          </td>
        
          </tr>
        </table>
        

        【讨论】:

          【解决方案7】:

          在您的主题中创建文件archive-learning.php。

          这意味着 post_type 是“学习”

          <?php
          if ( get_query_var( 'paged' ) ) {
                  $paged = get_query_var( 'paged' );
              } elseif ( get_query_var( 'page' ) ) {
                  $paged = get_query_var( 'page' );
              } else {
                  $paged = 1;
              } 
          
          
          <?php
          $custom_args = array(
                  'post_type'     => 'learning',
                  'post_status'   => 'public',
                  'orderby'       =>  'date',
                  'order'         =>'DESC',    
                   'posts_per_page'=>12,//limit 6
                   'paged' => $paged
              );
          $wp_query = new WP_Query( $custom_args );
          $getPosts =  get_posts($custom_args);
          
          ?>
          <?php if ($getPosts) : ?>
          				<?php global $post,$wp_query;?>
          				<?php foreach ($getPosts as $post): ?>
          				<?php setup_postdata($post);?>
          				<?php echo "your content here";?>
          				<?php endforeach;?>
          					
          				<?php
          				else :
          					
          					
          
          				endif;
          			?>
          <div class="pagenation"><?php if (function_exists(custom_pagination)) {custom_pagination($wp_query->max_num_pages,"",$paged);} ?></div></div>
              <?php wp_reset_postdata(); ?>
          转到文件functions.php并创建函数custom_pagination

          function custom_pagination($numpages = '', $pagerange = '', $paged='') {
          
            if (empty($pagerange)) {
              $pagerange = 2;
            }
          
            /*
             * This first part of our function is a fallback
             * for custom pagination inside a regular loop that
             * uses the global $paged and global $wp_query variables.
             * 
             * It's good because we can now override default pagination
             * in our theme, and use this function in default queries
             * and custom queries.
             */
            global $paged;
            if (empty($paged)) {
              $paged = 1;
            }
            if ($numpages == '') {
              global $wp_query;
              $numpages = $wp_query->max_num_pages;
              if(!$numpages) {
                  $numpages = 1;
              }
            }
          
            /** 
             * We construct the pagination arguments to enter into our paginate_links
             * function. 
             */
            
            $pagination_args = array(
            'base'           =>add_query_arg('page','%#%'),
            'format'          => 'page/%#%',
            'total'           => $numpages,
            'current'         => $paged,
            'show_all'        => False,
            'end_size'        => 1,
            'mid_size'        => $pagerange,
            'prev_next'       => True,
            'prev_text'       => __('&laquo;'),
            'next_text'       => __('&raquo;'),
            'type'            => 'plain',
            'add_args'        => false,
            'add_fragment'    => ''
          );
          
            $paginate_links = paginate_links($pagination_args);
          
            if ($paginate_links) {
              echo "<nav class='custom-pagination'>";
                //echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
                echo $paginate_links;
              echo "</nav>";
            }
          
          }

          【讨论】:

            【解决方案8】:

            这通常发生在您使用自定义永久链接结构 /%category%/%postname%/ 时,这确实是我的情况。

            This videoits text version 为我修复了它,就像一个魅力。

            总之,安装这个插件解决了我的问题:

            https://wordpress.org/plugins/post-category-prev-next-link-fix/#description

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-03-15
              • 1970-01-01
              • 2015-07-02
              • 2018-12-29
              • 2017-07-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多