问题描述
我将 this Ajax Load More button 用于两个 CPT 存档页面,它们工作得很好。 我还希望能够向 ACF 灵活内容块添加相同的加载更多按钮,这些块按分类法(使用 ACF 分类法字段)拉取帖子。
我似乎无法正常工作,想知道是否有人能看到我哪里出错了。
模板代码:
<?PHP $vid_category = get_sub_field('video_category'); // acf taxonomy field ?>
<div class="video-posts-cat-block">
<div class="container videos-container">
<?PHP
$posts = get_posts(array(
'post_type' => 'videos','posts_per_page' => 4,'post_status' => 'publish','orderby' => 'date','order' => 'ASC','tax_query' => array(
'taxonomy' => 'video_category','terms' => $vid_category,)
));
if( $posts ):
?>
<ul class="posts video-posts">
<?PHP
foreach( $posts as $post ):
$thumb = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
?>
<li class="post">
<div class="image" style="background-image: url('<?PHP echo $thumb; ?>');"></div>
<h3 class="title"><?PHP echo the_title(); ?></h3>
</li>
<?PHP
endforeach;
// ajax load more button
global $wp_query;
if ( $wp_query->max_num_pages > 1 )
echo '<a class="misha_loadmore button">Load more</a>';
?>
</ul>
<?PHP endif; ?>
</div>
</div>
functions.PHP
// AJAX Load More Button
function misha_my_load_more_scripts() {
global $wp_query;
wp_enqueue_script('jquery');
wp_register_script( 'my_loadmore',get_stylesheet_directory_uri() . '_static/js/main.js',array('jquery') );
wp_localize_script( 'my_loadmore','misha_loadmore_params',array(
'ajaxurl' => site_url() . '/wp-admin/admin-ajax.PHP','posts' => json_encode( $wp_query->query_vars ),'current_page' => get_query_var( 'paged' ) ? get_query_var('paged') : 1,'max_page' => $wp_query->max_num_pages
) );
wp_enqueue_script( 'my_loadmore' );
}
add_action( 'wp_enqueue_scripts','misha_my_load_more_scripts' );
// AJAX Load More Button - AJAX Handler
function misha_loadmore_ajax_handler(){
$args = json_decode( stripslashes( $_POST['query'] ),true );
$args['paged'] = $_POST['page'] + 1;
$args['post_status'] = 'publish';
query_posts( $args );
if( have_posts() ) :
while( have_posts() ): the_post();
get_template_part( '_template-parts/loop-archive',get_post_type() );
endwhile;
endif;
die; // here we exit the script and even no wp_reset_query() required!
}
add_action('wp_ajax_loadmore','misha_loadmore_ajax_handler');
add_action('wp_ajax_nopriv_loadmore','misha_loadmore_ajax_handler');
js 文件:
// AJAX Load More Button
jQuery(function($){
$('.misha_loadmore').click(function(){
var button = $(this),data = {
'action': 'loadmore','query': misha_loadmore_params.posts,'page' : misha_loadmore_params.current_page
};
$.ajax({
url : misha_loadmore_params.ajaxurl,data : data,type : 'POST',beforeSend : function ( xhr ) {
button.text('Loading...');
},success : function( data ){
if( data ) {
var $scrollpos = button.offset().top - 150;
button.text( 'Load more ' ).prev().after(data);
$(document).scrollTop($scrollpos)
misha_loadmore_params.current_page++;
if ( misha_loadmore_params.current_page == misha_loadmore_params.max_page )
button.remove();
} else {
button.remove();
}
}
});
});
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)