使用PAGINATE_Links()生成“1、2、3...10、20、30、40...55”分页

时间:2011-11-12 作者:tryon

我找到了以下代码:

    // Get total number of pages
    global $wp_query;
    $total = $wp_query->max_num_pages;
    // Only paginate if we have more than one page
    if ( $total > 1 )  {
         // Get the current page
         if ( !$current_page = get_query_var(\'paged\') )
              $current_page = 1;
         // Structure of “format” depends on whether we’re using pretty permalinks
        $permalinks = get_option(\'permalink_structure\');
        $format = empty( $permalinks ) ? \'&page=%#%\' : \'page/%#%/\';
        echo paginate_links(array(
              \'base\' => get_pagenum_link(1) . \'%_%\',
              \'format\' => $format,
              \'current\' => $current_page,
              \'total\' => $total,
              \'mid_size\' => 2,
              \'type\' => \'list\'
        ));
    }
它工作正常,但它会生成分页,如“1,2,3…LASTPAGENUMBER”,我见过生成分页的插件,如“1,2,3…19,20,30…LASTPAGENUMBER”。

这可以通过使用paginate\\u links()函数实现吗?

我不想仅仅为了这个小小的调整而添加插件。

3 个回复
SO网友:Chip Bennett

这个paginate_links() 函数默认情况下会执行此操作。控制参数为mid_size, 它决定了页面链接的数量around the current page 显示。默认值为2.

这意味着,假设您有12页,当前页是Page 1, 分页方式如下所示:

1 2 3 ... 12
但是如果当前页面Page 6, 分页方式如下所示:

1 ... 4 5 6 7 8 ... 12
我可能弄错了,但我认为分页链接插件必须这样工作。

很抱歉,我一开始误解了你的问题,不知道你想在分页链接中每隔十页输出一次。

此函数没有用于执行所需操作的内置参数。你最好的办法可能是\'show_all\'true, 改变\'type\'\'array\', 然后通过循环数组值自己构造输出。

SO网友:Andre Lohan

http://codex.wordpress.org/Function_Reference/paginate_links

您要查找的是“end\\u size”,请使用所需的值将其添加到参数数组中。

SO网友:MZK
$paged = (get_query_var(\'page\')) ? get_query_var(\'page\') : 1;

$args= new WP_Query(array(
        \'post_type\'=>\'card\',
        \'posts_per_page\' => 6,
        \'paged\' => $paged,
    ));  


    if($args->have_posts()) :

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

        $permalink=get_the_permalink(get_the_ID());
        $title=get_the_title();

        echo \'<div class="col-md-4 card-details"><a href="\'.$permalink.\'">\';
        echo \'<div class="card-img">\';the_post_thumbnail(\'thumbnail\');echo \'</div>\';
        echo \'<div class="card-title"><h4>\'.$title.\'</h4></a>\';
        echo\'</div>\';
        echo \'</div>\';

        endwhile;

        $total_pages = $args->max_num_pages;

        ?>

        <div class="greetings-pagination col-md-12">

        <?php

        if ($total_pages > 1){

            $current_page = max(1, get_query_var(\'page\'));

            echo paginate_links(array(
                \'base\' => get_pagenum_link(1) . \'%_%\',
                \'format\' => \'/page/%#%\',
                \'current\' => $current_page,
                \'total\' => $total_pages,
                \'prev_text\'    => __(\'prev\'),
                \'next_text\'    => __(\'next\'),
            ));
        }

    ?>  

    </div>

    <?php else :?>
    <h3><?php _e(\'404 Error&#58; Not Found\', \'\'); ?></h3>
    <?php endif; ?>
    <?php wp_reset_postdata();?>  
结束

相关推荐

Pagination & get_pages?

我有一个页面,其中列出了此特定页面的子页面,但我想为其添加分页,如何才能做到这一点?这是获取页面的代码<ul id=\"products\" class=\"items-thumbs\"> <?php $the_id = get_the_ID(); $args = array( \'child_of\' => $the_id,