重新加载同一页面的博客帖子的分页

时间:2014-02-18 作者:Jonathan Wold

Symptoms

如预期的那样,访问/博客/加载前10篇文章。

访问/博客/页面/2/(及以上)加载新URL,但包含相同的10篇帖子。除了URL外,其他内容都不会更改。

Setup Details

自定义Permalink结构:/blog/%year%/%monthnum%/%day%/%postname%/

静态帖子页面:“Blog”(Blog的slug)

我正在使用home.php 显示具有以下标记的帖子:

<?php
/**
 * The archive for blog posts 
*/

get_header(); ?>

    <div id="main-content">
        <div class="container">

            <section id="content" class="blog"> 

                <?php while ( have_posts() ) : the_post(); ?>

                    <?php get_template_part( \'content\', \'blog-index\' ); ?>

                <?php endwhile; ?>

            </section>

            <?php get_sidebar( \'blog\' ); ?>

            <div class="pagination">
                <?php wp_pagenavi(); ?>
            </div>

        </div>
    </div>

<?php get_footer(); ?>
我已经检查了插件冲突,我正在运行一个相对简单的设置。我正在使用WP-PageNavi 生成分页。

我还尝试将/blog/页面重命名为“blog2”,因为我认为可能存在永久链接冲突-同样的结果/blog2/page/2/加载相同的前10篇帖子。

你知道这是什么原因吗?

5 个回复
SO网友:Muddasir

$my_query = new WP_Query( array( \'posts_per_page\' => 3, \'paged\' => get_query_var(\'paged\') ) );

while ( $my_query->have_posts() ) : $my_query->the_post();
    the_title();
    // more stuff here
endwhile;

wp_pagenavi( array( \'query\' => $my_query ) );

wp_reset_postdata();
请尝试此代码,并将“设置”->“阅读”->“博客页面显示”中的显示帖子的大小增加到最多10到50或100,希望对您有所帮助。

SO网友:Robert hue

为什么要使用WP-PageNavi 用于基于数字的分页。WordPress提供了一种实现这一点的方法。顺便说一句,这里是供您在家中使用的完整查询。php

<div id="main-content">
    <div class="container">

        <section id="content" class="blog"> 

            <?php

              if ( get_query_var(\'paged\') ) { $paged = get_query_var(\'paged\'); } elseif ( get_query_var(\'page\') ) { $paged = get_query_var(\'page\'); } else { $paged = 1; }

              $args = array(
                  \'post_type\' => \'post\',
                  \'paged\' => $paged
              );

              $my_query = new WP_Query( $args );

              if ( $my_query->have_posts() ) :

                  while ( $my_query->have_posts() ) : $my_query->the_post();

                      get_template_part( \'content\', \'blog-index\' );

                  endwhile;

                  if ( $my_query->max_num_pages > 1 ) :
                      $big = 999999999;
                      echo \'<div class="pagination">\';
                      echo paginate_links( array(
                          \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
                          \'format\' => \'?paged=%#%\',
                          \'current\' => max( 1, get_query_var(\'paged\') ),
                          \'total\' => $my_query->max_num_pages
                      ) );
                      echo \'</div>\';
                  endif;

              else :

                    get_template_part( \'content\', \'none\' );

              endif;

              wp_reset_postdata();

            ?>

        </section>

        <?php get_sidebar( \'blog\' ); ?>

    </div>
</div>

SO网友:Milople Inc

请使用此代码我遇到了同样的问题,然后我实现了此

<?php if ( $wp_query->max_num_pages > 1 ) :?>
    <div class="pagination">
        <?php for ( $i = 1; $i <= $wp_query->max_num_pages; $i ++ ) { 
            $link = $i == 1 ? remove_query_arg( \'pg\' ) : add_query_arg( \'pg\', $i );
            echo \'<a href="\' . $link . \'"\' . ( $i == $paged ? \' class="active"\' : \'\' ) . \'>\' . $i . \'</a>\';
        } ?>
    </div>
<?php endif ?>
希望这对你也有帮助。

SO网友:suBi

使用主页。php听起来不是一个好主意,但如果它是页面中唯一的查询,您可能需要添加一些东西。以下内容通常适用于对静态页面分页:

添加:

global $paged, $wp_query; 
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
但您还必须在模板部分的查询参数中再添加一个参数才能启用分页:

\'paged\'     => $paged
模板上的最终代码为:
get_header(); ?>

global $paged, $wp_query; 
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

    <div id="main-content">
        <div class="container">

        <section id="content" class="blog"> 

            <?php while ( have_posts() ) : the_post(); ?>

                <?php get_template_part( \'content\', \'blog-index\' ); ?>

            <?php endwhile; ?>

        </section>

        <?php get_sidebar( \'blog\' ); ?>

        <div class="pagination">
            <?php wp_pagenavi(); ?>
        </div>

    </div>
</div>

SO网友:aifrim

为什么不添加如下代码来强制分页:

<div id="main-content">
    <div class="container">

        <section id="content" class="blog"> 

            <?php
            $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
            query_posts(\'posts_per_page=3&paged=\' . $paged);
            ?>

            <?php while ( have_posts() ) : the_post(); ?>

                <?php get_template_part( \'content\', \'blog-index\' ); ?>

            <?php endwhile; ?>

        </section>

        <?php get_sidebar( \'blog\' ); ?>

        <div class="pagination">
            <?php wp_pagenavi(); ?>
        </div>

    </div>
</div>
检查此链接:http://codex.wordpress.org/Function_Reference/query_posts#Pagination

结束

相关推荐

Change Taxonomy Permalinks

我有自定义帖子,我创建了一个显示所有自定义帖子的页面。示例:www.example.com/archive-page我想知道是否可以更改与此自定义帖子相关的类别和标签的永久链接。现在我有:www.example.com/my-custom-post-type-cats/my-category-1www.example.com/my-custom-post-type-tags/my-tag-1</我想要这样的东西:www.example.com/archive-page?category=1www.e