我试图在Wordpress帖子页面上过滤AJAX无限滚动功能/加载更多按钮的结果。
如果我在类别ID中硬编码作为WP_Query
的参数,它可以工作,但是我似乎无法找到一种方法来获取帖子的类别ID的当前集合。
这是我的load_more php函数:
// Load More
add_action( 'wp_ajax_nopriv_load_more', 'load_more');
add_action( 'wp_ajax_load_more', 'load_more');
function load_more() {
$paged = $_POST["page"]+1;
$current_category = $wp_query->get_queried_object();
$query = new WP_Query( array(
'post' => 'post',
'paged' => $paged,
'cat' => $current_category
));
while ($query->have_posts()) : $query->the_post();
?>
<article class="post-box" id="content">
<div class="post-img-box">
<?php if ( has_post_thumbnail() ) {
the_post_thumbnail();
} else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/blank.png" alt="<?php the_title(); ?>" />
<?php } ?>
</div>
<h5><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h5>
<?php the_excerpt(); ?>
<p class="post-date"><?php the_time('F j, Y'); ?></p>
</article>
<?php endwhile;
wp_reset_postdata();
die();
}
是$current_category = $wp_query->get_queried_object();
坏了
我设法用一种迂回的方式解决了这个问题:
1)将$cat_id = get_query_var('cat');
添加到wordpress主题页面的顶部。(在我的例子中是index.php).
2)将data-category="<?php echo esc_attr($cat_id); ?>"
添加到Load More html按钮标签中。
data-category
到数据请求对象:
$(document).on('click', '.load-more-btn', function() {
event.preventDefault();
var that = $(this);
var page = that.data('page');
var newPage = page+1;
var ajaxurl = that.data('url');
var cat = that.data('category');
console.log(page);
$.ajax({
url : ajaxurl,
type : 'post',
data : {
cat : cat,
page : page,
action : 'load_more'
},
error: function(response) {
console.log(reponse);
},
success : function(response) {
that.data('page', newPage);
$('.more-posts').append(response);
}
});
})
4)将$current_category = $_POST['cat'];
添加到php load_more()
函数。
我在主页和存档页面上实现了onScroll无限帖子加载。我的做法简单如下:
-
定位当前类别ID
$data = array( 'processor' => get_template_directory_uri() . '/loopHandler.php', 'category' => get_query_var('cat'), 'loader' => get_template_directory_uri() . '/img/ajax-loader.gif'); wp_localize_script('ajaxLoop', 'localized_data', $data);
-
将类别ID发布到query_posts
data: {numPosts : 1, pageNumber: page, category: localized_data.category },
-
构建查询参数
$posts = query_posts(array( 'posts_per_page' => $numPosts, 'paged' => $page, 'cat' => $_GET['category'] ));