如果它对任何人都有帮助,下面是当您想将Wordpress分页和锚定添加到模板页面时可能发生的问题的完整答案。
<小时>
STEP 1
跟随
the example on the Codex 因此
paginate_links()
函数适用于自定义查询,而不适用于主查询。
<小时>
STEP 2
您的函数应如下所示:
global $wp_query;
$big = 999999999; // need an unlikely integer
$translated = __( \'Page\', \'mytextdomain\' ); // Supply translatable string
echo paginate_links( array(
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
\'format\' => \'?paged=%#%\',
\'current\' => max( 1, get_query_var(\'paged\') ),
\'total\' => $wp_query->max_num_pages,
\'before_page_number\' => \'<span class="screen-reader-text">\'.$translated.\' </span>\'
) );
现在,此代码可能会出现几个问题,下面是几个解决方案:
如果您删除\'format\' => \'?paged=%#%\',
line and let Wordpress做的是格式化permalink(打开pretty permalink可能会导致问题);
您可能会遇到以下问题:#
如果你逃离get_pagenum_link()
功能输出。在这种情况下,只需移除esc_url()
本部分功能esc_url( get_pagenum_link( $big ) )
;
有一个参数可以添加你的锚,它叫做add_fragment
.
查看codex以查看可用于此函数的所有参数。最后,您的代码将如下所示:
$big = 999999999;
$translated = __( \'Page\', \'mytextdomain\' );
echo paginate_links( array(
\'base\' => str_replace( $big, \'%#%\', get_pagenum_link( $big, false ) ),
\'current\' => max( 1, get_query_var( \'paged\' ) ),
\'total\' => $wp_query->max_num_pages,
\'before_page_number\' => \'<span class="screen-reader-text">\'.$translated.\' </span>\',
\'prev_text\' => __( \'Précédent\', \'epc\' ), // In case you want to change the previous link text
\'next_text\' => __( \'Suivant\', \'epc\' ), In case you want to change the next link text
\'type\' => \'list\', // How you want the return value to be formatted
\'add_fragment\' => \'#result\', // Your anchor
) );
<小时>
STEP 3
最后,Safari如何处理带有锚点的页面重定向存在问题。返回Safari的第一页时,您可能会发现没有应用锚定。你需要做的(如果你打开了permalink)是过滤你的
page/1
防止重定向。像这样:
add_filter( \'paginate_links\', \'custom_pagination_redirect\' );
function custom_pagination_redirect( $link ) {
return preg_replace( \'%/page/1/%\', \'/\', $link );
}
就这样!非常感谢@bonger提供的宝贵帮助!