php - Wordpress - 无限滚动的自定义分页
问题描述
我有一个网站,在我的页面新闻中,我添加了一个带有无限滚动的自定义分页,如果永久链接是这样的话,效果很好,day and name
但现在我必须把它说清楚。
当我将永久链接设置为通用时,无限滚动不会停止并重复发布。
在我的function.php
我有这个代码:
function custom_pagination($numpages = '', $pagerange = '', $paged='') {
if (empty($pagerange)) {
$pagerange = 2;
}
global $paged;
if (empty($paged)) {
$paged = 1;
}
if ($numpages == '') {
global $wp_query;
$numpages = $wp_query->max_num_pages;
if(!$numpages) {
$numpages = 1;
}
}
$pagination_args = array(
'base' => get_pagenum_link(1) . '%_%',
'format' => 'page/%#%',
'total' => $numpages,
'current' => $paged,
'show_all' => False,
'end_size' => 1,
'mid_size' => $pagerange,
'prev_next' => True,
'prev_text' => __('«'),
'next_text' => __('»'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => ''
);
$paginate_links = paginate_links($pagination_args);
if ($paginate_links) {
echo "<nav id='pagination' class='custom-pagination'>";
echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
echo $paginate_links;
echo "</nav>";
}
}
在我的模型新闻中,我有这个:
<div class="infinite-scroll">
<?php
$category = get_field('nome', get_the_ID());
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
var_dump($paged);
$custom_args = array(
'post_type' => 'post',
'posts_per_page' => 6,
'paged' => $paged,
'category_name' => $category,
);
$articles = new WP_Query( $custom_args );
?>
<?php if ( $articles->have_posts() ) : while ( $articles->have_posts() ) : $articles->the_post(); // run the loop ?>
<div class="col-xs-12 col-sm-6 col-md-4">
<a class="news-link" href="<?php the_permalink() ?>">
<div class="news">
<div class="image">
<?php the_post_thumbnail('thumbnail') ?>
</div>
<div class="title">
<span>
<?php the_title(); ?>
</span>
</div>
<div class="excerpt">
</div>
</div>
</a>
</div>
<?php endwhile; ?>
<?php
var_dump($articles->max_num_pages);
if (function_exists(custom_pagination)) {
custom_pagination($articles->max_num_pages,"",$paged);
}
?>
</div>
在 js 文件中我有这个无限滚动:
$('.infinite-scroll').jscroll({
autoTrigger: true,
loadingHtml: '<img class="center-block" src="/wp-content/themes/template/images/loader.gif" alt="Loading..." />',
padding: 0,
nextSelector: '#pagination .next',
contentSelector: 'div.infinite-scroll',
callback: function() {
$('#pagination').remove();
}
});
我认为问题在于不会停止的分页链接。
我怎么解决这个问题?
解决方案
您可以在您的 function.php 文件中遵循以下功能
您的 functions.php 文件的代码:
function pagination($pages = '', $range = 2) {
$morepages = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($pages == '') {
global $wp_query;
$pages = $wp_query->max_num_pages;
if(!$pages) {
$pages = 1;
}
}
if(1 != $pages) {
echo '<div class="pagination">';
if($paged > 1 && $morepages < $pages) echo '<a class="prev-link" href="'.get_pagenum_link($paged - 1).'">←</a>';
if($paged > 2 && $paged > $range+1 && $morepages < $pages) echo '<a href="'.get_pagenum_link(1).'">1</a><span class="separate">...</span>';
for ($i=1; $i <= $pages; $i++) {
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $morepages )) {
echo ($paged == $i)? '<span class="current">'.$i.'</span>':'<a href="'.get_pagenum_link($i).'">'.$i.'</a>';
}
}
if ($paged < $pages-1 && $paged+$range-1 < $pages && $morepages < $pages) echo '<span class="separate">...</span><a class="last-link" href="'.get_pagenum_link($pages).'">'.$pages.'</a>';
if ($paged < $pages && $morepages < $pages) echo '<a class="next-link" href="'.get_pagenum_link($paged + 1).'">→</a>';
echo '</div>';
}
}
然后在适当的地方把它放到你的主题中(通常在 index.php、archive.php、category.php、search.php 文件上):
这是默认实现,将显示指向当前页面周围两个页面的链接,以及第一页和最后一页链接,以及上一个/下一个链接。
但是你也可以在我们调用函数时定义其中的一些属性:
<?php pagination('','3'); ?>
这将在当前页面周围显示三个链接。
<?php pagination('5'); ?>
这将仅显示从第 1 页到第 5 页的 5 个链接。
推荐阅读
- tcl - 在 TCL 中的“term::receive::bind”之后“gets stdin”不起作用
- reactjs - 为什么axios get request在控制台返回一个空数组?
- javascript - 如何在表格底部放置表格分页?
- angular - 数据更新后,NgRx 如何更新远程数据?
- angular - Angular same component instance to the same application multiple times in hierarchy thru modal
- java - Android pjsip crash when call : error : assertion "stream && info" failed
- python - How to extract the predicted classes when using the return_sequence and TimeDistributed parameters in an LSTM model?
- python - How to get number of CPU or thread are using when use psutil.popen()?
- php - How to make Woocommerce product as a Contact form
- php - using php to extract zip from stored myssql blob