使用Pages_Links进行分页

时间:2017-07-24 作者:bhood

我正在使用内置paginate_links 功能和设置format参数设置为默认值:
\'?paged=%#%\' . 出于某种原因,它会不断重定向到不同格式的url。例如,当我单击第二页的分页链接时,应该是www.domain.com/subpage/?paged=2, 但它的格式是www.domain.com/subpage/page/2 . 不确定如何停止此重定向?有什么想法吗?

下面是我使用的参数函数:

function custom_page_navi( $totalpages, $page, $end_size, $mid_size )
{
    $bignum = 999999999;

    if ( $totalpages <= 1 || $page > $totalpages ) return;

        //NOTE: https://codex.wordpress.org/Function_Reference/paginate_links
    return paginate_links( array(
        \'format\'        => \'?paged=%#%\',
        \'current\'       => max( 1, $page ),
        \'total\'         => $totalpages,
        \'prev_next\'     => false,
        \'type\'          => \'list\',
        \'show_all\'      => false,
        \'end_size\'      => $end_size,
        \'mid_size\'      => $mid_size
    ) );
}

1 个回复
SO网友:WPExplorer

这是paginate\\u links函数的问题,您的默认永久链接结构设置为postname/custom,但希望分页使用默认链接结构。

如果你看看代码-https://core.trac.wordpress.org/browser/tags/4.8/src/wp-includes/general-template.php#L0

在paginate\\u links函数的顶部可以看到以下内容

// Setting up default values based on the current URL.
$pagenum_link = html_entity_decode( get_pagenum_link() );
$url_parts    = explode( \'?\', $pagenum_link );
然后降低,您将发现以下内容:

// Merge additional query vars found in the original URL into \'add_args\' array.
if ( isset( $url_parts[1] ) ) {
    Bunch of code here to set the format...
}
因此,问题是,当您使用postname permalink结构时,$url\\u parts变量将只返回1个数组值,而自定义格式检查仅在数组中有2个返回值时运行。if语句中的代码是解析format参数的代码。

因此,格式参数被完全忽略:(

如果转到“设置”>“永久链接”,并将结构设置为“普通”,则应该可以看到分页链接按您的意愿工作。

您可以尝试过滤“get\\u pagenum\\u link”函数以返回“普通”链接,因为主要问题是此函数忽略了paginate\\u links中定义的格式,而是使用$wp\\u rewrite->using\\u permalinks()检查-https://developer.wordpress.org/reference/functions/get_pagenum_link/

结束

相关推荐

Post with Custom Permalinks

我的永久链接设置如下:http://myblog.com/%category%/%postname%/一切正常。但我正在寻找一种方法,只为一些帖子(10-11篇帖子)设置如下永久链接。http://myblog.com/%postname%/我之所以要这样做,是因为我正在合并两个WordPress网站,我不想失去另一个网站的帖子,这些帖子已经以旧的permalink结构发布在Facebook等网站上。