@youandcredit

Wordpress при AJAX грузит все посты сразу + дублит их?

Пытаюсь по ajax подгружать посты, все бы ничего, но первые 16 выводятся нормально, после срабатывания события, выгружает штук 200 записей, хотя их всего 50, дублит их, а не подгружает по 8

скрипт ajax:

jQuery(function($){
	var canBeLoaded = true, 
	    bottomOffset = 1500; 
 
	$(window).scroll(function(){
		var data = {
			'action': 'loadmore',
			'query': misha_loadmore_params.posts,
			'page' : misha_loadmore_params.current_page
		};
		if( $(document).scrollTop() > bottomOffset && canBeLoaded == true ){
			$.ajax({
				url : misha_loadmore_params.ajaxurl,
				data:data,
				type:'POST',
				beforeSend: function( xhr ){
				
					canBeLoaded = false; 
				},
				success:function(data){
					if( data ) {
						$('.category_hor_style').after( data ); // where to insert posts
						canBeLoaded = true; 
						misha_loadmore_params.current_page++;
					}
				}
			});
		}
	});
});


Обработчик php:

function misha_my_load_more_scripts() {
 
	global $wp_query; 
 
 
	wp_register_script('my_loadmore', get_stylesheet_directory_uri() . '/myloadmore.js', array('jquery') );
 

	wp_localize_script( 'my_loadmore', 'misha_loadmore_params', array(
		'ajaxurl' => site_url() . '/wp-admin/admin-ajax.php', // WordPress AJAX
		'posts' => json_encode( $wp_query->query_vars ), // everything about your loop is here
		'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' );


function misha_loadmore_ajax_handler(){
 
	$args = json_decode(stripslashes($_POST['query']), true);
	$args['paged'] = $_POST['page'] +1; // we need next page to be loaded
	$args['post_status'] = 'publish';
    $arg ['showposts'] = 16;
    
	query_posts( $args );
 
	if( have_posts() ) :
 
		
		while( have_posts() ): the_post(); 
	// тут моя верстка блоков 
 

 
		endwhile;
 
	endif;
	die; 
}
 
 
 
add_action('wp_ajax_loadmore', 'misha_loadmore_ajax_handler'); // wp_ajax_{action}
add_action('wp_ajax_nopriv_loadmore', 'misha_loadmore_ajax_handler'); // wp_ajax_nopriv_{action}
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Aricus
$arg ['showposts'] = 16;

Параметр showposts устаревший ещё с версии 2.1. Попробуйте вместо этой строки написать
$arg ['posts_per_page'] = 16;
Подробнее тут
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы