归档分页不起作用

时间:2015-04-23 作者:Duikboot

我正在尝试为存档添加分页。我想每页显示12篇文章,然后显示“下一页”/“上一页”按钮。

当我手动更改$paged变量的值时,1变为2就可以了。当我单击归档页面上的下一步按钮时,它会加载一个非常奇怪的主题页面。url看起来像:“/页/2/”。

我做错了什么?

这是我迄今为止编写的代码:

<?php
  global $paged,$wp_query;

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

    $args = array(
        \'post_type\' => \'realisaties\',
        \'posts_per_page\' => 12,
      \'paged\' => $paged,
        \'order\' => \'ASC\'
    );

    $archive_query = new WP_Query($args);

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

      $image = get_field(\'preview_afbeelding\');

      if( !empty($image) ):

        $url = $image[\'url\'];
        $title = $image[\'title\'];
        $alt = $image[\'alt\'];
        $caption = $image[\'caption\'];

        // thumbnail
        $size = \'medium\';
        $thumb = $image[\'sizes\'][ $size ];
        $width = $image[\'sizes\'][ $size . \'-width\' ];
        $height = $image[\'sizes\'][ $size . \'-height\' ];

        if( $caption ): ?>
          <div class="wp-caption">
        <?php endif; ?>
        <div class="col-md-3">
          <?php echo get_the_title(); ?>
          <a href="<?php the_permalink() ?>" title="<?php echo $title; ?>">
            <img class="realisatie-img img-responsive" src="<?php echo $thumb; ?>" alt="<?php echo $alt; ?>" title="" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
            <br />
          </a>
        </div>

        <?php if( $caption ): ?>
        <h2> <?php echo get_the_title(); ?></h2>
        <p class="wp-caption-text"><?php echo $caption; ?></p>
        </div>
      <?php
      endif;
      endif;
    endwhile;
    ?>


<?php next_posts_link(\'Older Entries »\', $archive_query->max_num_pages); ?>
<?php previous_posts_link(\'Newer Entries\', $archive_query->max_num_pages); ?>
<?php wp_reset_query(); ?>
</div>
</div>

2 个回复
SO网友:Webimetry Solutions

您可以使用以下步骤显示分页。步骤1:-在函数中包含以下代码段。php文件:-

function webim_pagination ( $pages = \'\', $range = 4 ) {
     $showitems = ($range * 2) + 1;
     global $paged;
     if( empty( $paged ) ) $paged = 1;
     if( $pages == \'\' ) {
         global $wp_query;
         $pages = $wp_query->max_num_pages;
         if(!$pages) {
             $pages = 1;
         }
     }   
     if(1 != $pages) {
         echo "<nav class=\\"webim-page-pagination\\"><ul class=\\"page-numbers wow fadeInRight\\"><li class=\\"disabled\\"><a href=\\"#\\">" . __(\'Page \', \'webim\') . $paged . __(\' of \', \'webim\') . $pages . "</a></li>";
         if( $paged > 2 && $paged > $range + 1 && $showitems < $pages ) echo "<li><a href=\'" . get_pagenum_link( 1 ) . "\'>&lArr; " . __(\'First\', \'webim\') . "</a></li>";
         if( $paged > 1 && $showitems < $pages ) echo "<li><a href=\'" . get_pagenum_link( $paged - 1 ) . "\'>&larr; " . __(\'Previous\', \'webim\') . "</a></li>";
         for ( $i = 1; $i <= $pages; $i++ ) {
             if ( 1 != $pages && ( !( $i >= $paged + $range + 1 || $i <= $paged - $range - 1 ) || $pages <= $showitems )) {
                 echo ( $paged == $i ) ? "<li class=\\"active\\"><a href=\\"#\\">" . $i . "</a></li>" : "<li><a href=\'" . get_pagenum_link( $i ) . "\' class=\\"inactive\\">" . $i . "</a></li>";      
             }
         }
         if ( $paged < $pages && $showitems < $pages ) echo "<li><a href=\\"" . get_pagenum_link( $paged + 1 ) . "\\">" . __(\'Next\', \'webim\') . " &rarr;</a></li>";
         if ( $paged < $pages-1 &&  $paged + $range - 1 < $pages && $showitems < $pages ) echo "<li><a href=\'" . get_pagenum_link( $pages ) . "\'>" . __(\'Last\', \'webim\') . " &rArr;</a></li>";
         echo "</ul></nav>\\n";
     }
}
步骤2:-现在在需要分页的地方调用分页函数:-

<?php webim_pagination(); ?>
最好为可重用的元素提供一个函数。

SO网友:Elex

Pieter的评论是对的,使用自定义WP\\U查询不是一个好主意。在我看来,没有它,你可以实现你想要的。

有关更多信息,请访问:https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Changing_the_number_of_posts_per_page.2C_by_post_type

您的实际存档。php(或具有多个post循环页的任何内容)代码可以是:

<?php

    while (have_posts()) : the_post();

      $image = get_field(\'preview_afbeelding\');

      if( !empty($image) ):

        $url = $image[\'url\'];
        $title = $image[\'title\'];
        $alt = $image[\'alt\'];
        $caption = $image[\'caption\'];

        // thumbnail
        $size = \'medium\';
        $thumb = $image[\'sizes\'][ $size ];
        $width = $image[\'sizes\'][ $size . \'-width\' ];
        $height = $image[\'sizes\'][ $size . \'-height\' ];

        if( $caption ): ?>
          <div class="wp-caption">
        <?php endif; ?>
        <div class="col-md-3">
          <?php echo get_the_title(); ?>
          <a href="<?php the_permalink() ?>" title="<?php echo $title; ?>">
            <img class="realisatie-img img-responsive" src="<?php echo $thumb; ?>" alt="<?php echo $alt; ?>" title="" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
            <br />
          </a>
        </div>

        <?php if( $caption ): ?>
        <h2> <?php echo get_the_title(); ?></h2>
        <p class="wp-caption-text"><?php echo $caption; ?></p>
        </div>
      <?php
      endif;
      endif;
    endwhile;
    ?>
<?php next_posts_link(\'Older Entries »\'); ?>
<?php previous_posts_link(\'Newer Entries\'); ?>
</div>
</div>
你必须在函数中加入你的主题。php文件:

function wpse_185115_posts_per_page( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_post_type_archive( \'realisaties\' ) ) {
        $query->set( \'posts_per_page\', 12 );
        return;
    }
}
add_action( \'pre_get_posts\', \'wpse_185115_posts_per_page\', 1 );
最后一段代码更新您的主查询(本例中的post类型“Realizaties”的归档页面),以设置posts_per_page 主查询的参数为12。

结束

相关推荐

Pagination on Single Post

我想在我的单曲上设置分页。php文件,以便正确使用无限滚动函数。我知道分页可以放在一个帖子上,但我需要做一个。php页面可以在URL上附加一个变量。我的意思是,如果我有这个URL:http://www.example.com/post_URL/ 我需要它像这样工作:http://www.example.com/post_URL/page/2/ 它需要像这样工作,因为我在主页/主博客页面上有一个无限滚动条,它选择的是get\\u query\\u var(\'page\')变量,它似乎不