我正在使用内置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
) );
}
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/