好的,我有一个自定义的帖子类型页面,我已经将paginate_links
用于在元素中导航的函数。
如果我不做任何事情,让WP使用任何附加到归档页面的机制,那么paginate_links
工作正常,但之前的链接永远不会返回到第一页。
手动更改链接效果良好。
相反,如果我像答案所建议的那样做here, 覆盖wp_query
对象paginate_links
移到第二页,但“当前”始终保持在第1页。
CODE
$current = get_query_var(\'page\') ? get_query_var(\'page\') : 1; // Get query var
$record_per_page = 2; // How many faqs to display on each page
$offset = ( $current - 1 ) * $record_per_page;
$args = array(
\'post_type\' => \'faqs\',
\'orderby\' => \'date\',
\'order\' => \'desc\',
\'page\' => $current,
\'offset\' => $offset,
\'posts_per_page\' => $record_per_page,
);
$the_query = new WP_Query( $args );
$temp_query = $wp_query;
$wp_query = NULL;
$wp_query = $the_query;
$row = 1;
$total = ceil(wp_count_posts(\'faqs\')->publish / $record_per_page);
while ( have_posts() ) : the_post();
echo get_the_ID();
endwhile;
// Reset postdata
wp_reset_postdata();
if ( $total > 1) {
$paginate_links = paginate_links( array(
//\'base\' => @add_query_arg( \'page\', \'%#%\' ),
\'base\' => \'%_%\',
\'prev_text\' => __(\'« Indietro\'),
\'next_text\' => __(\'Avanti »\'),
\'mid_size\' => 5,
\'format\' => \'?page=%#%\',
\'current\' => $current,
\'total\' => $total
)); echo $paginate_links;
}
// Reset main query object
$wp_query = NULL;
$wp_query = $temp_query;
知道发生了什么吗?
SO网友:Andrea Moro
好的,这个问题似乎与base和format参数有关。我可能无法从技术上正确解释发生了什么。然而,从我在存档页面中看到的情况来看,我的页面参数默认为“page”,而不是预期的“paged”。
也就是说,当使用设置为“%\\%”的基参数时,哈希应该采用正确的上一页或下一页编号。这使得无法使用格式并在需要时调整输出。
相反,使用“%\\%”强制WP使用format参数将“%\\%”设置为值的一部分,可使WP始终在任何地方使用当前页面。
因此,我找到的解决方案是调整基本参数中的所有内容,如以下代码段所示:
$paginate_links = paginate_links( array(
\'base\' => preg_replace(\'/\\?.*/\', \'/\', get_pagenum_link()) . \'%_%\',
\'prev_text\' => __(\'« Indietro\'),
\'next_text\' => __(\'Avanti »\'),
\'mid_size\' => 5,
\'current\' => $current,
\'total\' => $totalpages
));