金铭广告

wordpress页面内容过多导致分页出错的解决方法

金铭广告 Wordpress建站 2023-12-16 02:14:26 141

如果我们的网站的数据量非常大,有时会造成一个问题,就是列表页在分页时,查询数据库时间过长,导致分页失效。

遇到这种WordPress网站数据多导致分页失效的问题,怎么解决呢?下面WP模板阁介绍一下解决方法。

首先打开自己模板的里的函数文件functions.php,找到分页函数:

function kriesi_pagination($query_string){
global $posts_per_page, $paged;
$my_query = new WP_Query($query_string ."&posts_per_page=-1");
$total_posts = $my_query->post_count;
if(empty($paged))$paged = 1;
$prev = $paged - 1;
$next = $paged + 1;
$range = 2; // only edit this if you want to show more page-links
$showitems = ($range * 2)+1;
$pages = ceil($total_posts/$posts_per_page);
if(1 != $pages){
echo "<div class='pagination'>";
echo ($paged > 2 && $paged+$range+1 > $pages && $showitems < $pages)"<a href='".get_pagenum_link(1)."' rel='external'>最前</a>":"";
echo ($paged > 1 && $showitems < $pages)"<a href='".get_pagenum_link($prev)."' rel='external'>上一页</a>":"";
for ($i=1; $i <= $pages; $i++){
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
echo ($paged == $i)"<span class='current'>".$i."</span>":"<a href='".get_pagenum_link($i)."' class='inactive' rel='external'>".$i."</a>";
}
}
echo ($paged < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($next)."' rel='external'>下一页</a>" :"";
echo ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) ? "<a href='".get_pagenum_link($pages)."' rel='external'>最后</a>":"";
echo '<span>共['.$pages.']页</span>';
echo "</div>\n";
}
}

然后,把这个分页函数删除,粘贴下面的分页函数即可。

function kriesi_pagination() {
$p = 2;
if ( is_singular() ) return;
global $wp_query, $paged;
$max_page = $wp_query->max_num_pages;
if ( $max_page == 1 ) return;
echo '<div class="pagination">';
if ( empty( $paged ) ) $paged = 1;
if ( $paged > $p + 1 ) _paging_link( 1, '&lt;&lt;' );
echo previous_posts_link('&lt;');
if ( $paged > $p + 2 ) echo "<span>···</span>";
for( $i = $paged - $p; $i <= $paged + $p; $i++ ) {
if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class="current">{$i}</span>" : _paging_link( $i,'' );
}
if ( $paged < $max_page - $p - 1 ) echo "<span> ··· </span>";
echo next_posts_link('&gt;');
echo '<span>共 '.$max_page.' 页</span>';
echo "</div>";
}
function _paging_link( $i, $title ) {
if ( $title == '' ) $title = $i;
echo "<a href='", esc_html( get_pagenum_link( $i ) ), "'>{$title}</a>";
}

这样就可以解决WordPress网站因为数据多导致分页失效的问题。