Pages_Links()将空href添加到第一页和上一个链接

时间:2012-05-17 作者:moraleida

这真的很奇怪。试图解决this problem 最后,我几乎完美地使用了paginate\\u links()而不是自定义分页函数:

$myquery = new WP_Query($args);

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

    $pagination = paginate_links(array(

    \'total\'     => $myquery->max_num_pages,
    \'current\'   => $paged,
    \'show_all\'  => true,
    \'type\'      => \'list\',
));
这似乎很有效。直到我发现无论我做什么,每当我在第1页之后,函数都会打印一个空的href="" 在我的第一个链接上。

所以我得到了这些加价:

<!-- base page - example.com/parent-page/child-page/ -->
<!-- same for page 1 - example.com/parent-page/child-page/?page=1 -->
<ul class="page-numbers">
<li><span class="page-numbers current">1</span></li>
<li><a class="page-numbers" href="?page=2">2</li>
<li><a class="page-numbers" href="?page=3">3</li>
<li><a class="page-numbers" href="?page=4">4</li>
<li><a class="next page-numbers" href="?page=2">Next</li>
</ul>

<!-- page 2 - example.com/parent-page/child-page/?page=2 -->
<ul class="page-numbers">
<li><a class="prev page-numbers" href="">Previous</a></li> <!-- empty href="" -->
<li><a class="page-numbers" href="">1</li><!-- empty href="" -->
<li><span class="page-numbers current">2</span></li>
<li><a class="page-numbers" href="?page=3">3</li>
<li><a class="page-numbers" href="?page=4">4</li>
<li><a class="next page-numbers" href="?page=2">Next</li>
</ul>

<!-- page 3 and onwards - example.com/parent-page/child-page/?page=3 -->
<ul class="page-numbers">
<li><a class="prev page-numbers" href="?page=2">Previous</a></li> <!-- correct -->
<li><a class="page-numbers" href="">1</li><!-- empty href="" -->    
<li><a class="page-numbers" href="?page=2">2</li>
<li><span class="page-numbers current">3</span></li>
<li><a class="page-numbers" href="?page=4">4</li>
<li><a class="next page-numbers" href="?page=2"></li>
</ul>
深入了解wp includes/general模板上的paginate\\u links()。php(大约1954年的一行)我发现,出于某种原因,它在第2页上显式地将空链接参数传递给前一个链接:

if ( $prev_next && $current && 1 < $current ) :
        $link = str_replace(\'%_%\', 2 == $current ? \'\' : $format, $base);
和第一个链接(第1968行)

if ( $show_all || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) :
                $link = str_replace(\'%_%\', 1 == $n ? \'\' : $format, $base);
有没有想过为什么会这样,以及是否有可能在不创建另一个分页函数的情况下避免这种情况?

3 个回复
最合适的回答,由SO网友:jmdodd 整理而成

是否尝试指定baseformat 的参数paginate_links()? 它假定默认值为:

    \'base\' => \'%_%\',  
    \'format\' => \'?page=%#%\',  
您的base 应该是这样的/parent-page/child-page/%_%; 那么第一个页面链接将是/parent-page/child-page/, 后续链接将遵循以下格式/parent-page/child-page/?page=3 (第3页示例)。

base, 这个%_% 替换为format 参数
format, 这个%#% 替换为页码。

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

SO网友:Dennis

对于其他感兴趣的人,以下是对我有用的代码:

 echo paginate_links( array(
    \'current\' => max(1, get_query_var(\'paged\')),
    \'total\' => $wp_query->max_num_pages,
    \'base\' => get_pagenum_link(1) . \'%_%\',  
        \'format\' => \'page/%#%\',
) );

SO网友:David Gard

可怕的过时了,但我一直有这个问题,我得到了以下工作-

echo paginate_links(array(
    \'base\'      => remove_query_arg(\'page\', get_pagenum_link(1)).\'%_%\',
    \'current\'   => max(1, get_query_var(\'page\')),
    \'end_size\'  => 2,
    \'total\'     => $this->items->max_num_pages,
));

结束

相关推荐

How to use pagination?

我有一个页面的以下代码,在这里我拉一张照片,标题和最后10篇文章的摘录。问题是,我不知道如何添加分页?我也安装了WP PageNavi。我已经看到一些类似的问题得到了解决,但我根本无法真正理解这个概念,我首先尝试确保这是可能的?<?php /* Template Name: Opinion */ ?> <?php get_header(); ?> <div id=\"primary\"> <div id=\"