经过近一整天的研究,我发现有一个已知的WordPress错误会导致某些主题出现分页问题。它发生在升级到wp 4.4.1之后。我的恰好也是其中之一。有些人在尝试访问他们的分页的mysite.com/page/2时看到 404错误,但我只看到与page/1
相同的内容。
我已尝试关注其他两篇帖子,建议我将这些剪辑添加到functions.php
的底部:
add_filter(‘redirect_canonical’,’custom_disable_redirect_canonical’);
function custom_disable_redirect_canonical($redirect_url){
if (is_paged() && is_singular())
$redirect_url = false;
return $redirect_url;
}
和
add_action( 'parse_query', 'category_posts_per_page', 10, 1 );
function category_posts_per_page( $q_obj ) {
if( is_category() )
$q_obj->query_vars['posts_per_page'] = 1; // Change this example value
}
都没有奏效。这是我的代码。希望熟悉这个已知问题的其他人可以提供帮助。
/*---------------------------------
A custom pagination function
------------------------------------*/
if ( ! function_exists( 'krown_pagination' ) ) {
function krown_pagination( $query = null, $paginated = false, $range = 2, $echo = true ) {
if ( $query == null ) {
global $wp_query;
$query = $wp_query;
}
$page = $query->query_vars['paged'];
$pages = $query->max_num_pages;
if ( $page == 0 ) {
$page = 1;
}
$html = '';
if( $pages > 1 ) {
$html .= '<nav class="pagination">';
if ( ! $paginated ) {
if ( $page + 1 <= $pages ) {
$html .= '<a class="prev" href="' . get_pagenum_link( $page + 1 ) . '">' . '<i class="krown-icon-arrow_left"></i>' . __( 'Older Post' ,'krown' ) . '</a>';
}
if ( $page - 1 >= 1 ) {
$html .= '<a class="next" href="' . get_pagenum_link( $page - 1 ) . '">' . __( 'Newer Post' ,'krown' ) . '<i class="krown-icon-arrow_right"></i></a>';
}
} else {
for ( $i = 1; $i <= $pages; $i++ ) {
if ( $i == 1 || $i == $pages || $i == $page || ( $i >= $page - $range && $i <= $page + $range ) ) {
$html .= '<a href="' . get_pagenum_link( $i ) . '"' . ( $page == $i ? ' class="active"' : '' ) . '>' . $i . '</a>';
} else if ( ( $i != 1 && $i == $page - $range - 1 ) || ( $i != $page && $i == $page + $range + 1 ) ) {
$html .= '<a class="none">...</a>';
}
}
}
$html .= '</nav>';
}
if ( $echo ) {
echo $html;
} else {
return $html;
}
}
}
提前致谢。