• Здравствуйте, появилась страная проблема. На сайте есть пагинация и подгрузка AJAX постов по клику на кнопку. Все работает, данные передаются, никаких ошибок нет (Спасибо большое Юрию). Но, по клику на кнопку происходит следующее:

    У меня 11 постов. 10 постов отображается на одной странице и 1 получается на 2-ой. По клику на кнопку происходит бесовщина. Вместо того, чтоб подгрузить последний 11-ый пост, он мне выдает 2, 4, 6, 8 и 1 пост (дублирует).

    Вот все мои коды:

    const loadMoreBtn = document.querySelector('#loadmore');
    const postContainer = document.querySelector('#post-container');
    
    window.addEventListener('load', function () {
        if (loadMoreBtn) {
            loadMoreBtn.addEventListener('click', function () {
                const customAction = 'loadmore';
                const sendType = 'POST';
    
                let postData = new FormData();
    
                postData.append('action', customAction);
                postData.append('query', JSON.stringify(post_data));
                postData.append('page', current_page);
    
                const xhr = new XMLHttpRequest();
    
                xhr.open(sendType, ajaxurl);
    
                this.innerText = 'Посты загружаются...';
                this.disabled = true;
    
                xhr.addEventListener('readystatechange', function (data) {
                    if (this.readyState === 4 && this.status === 200) {
                        console.log(data);
    
                        postContainer.innerHTML = data.target.responseText;
    
                        loadMoreBtn.innerText = 'Загрузить еще';
                        loadMoreBtn.disabled = false;
    
                        current_page++;
    
                        console.log(current_page);
    
                        if (current_page >= max_pages) {
                            loadMoreBtn.remove();
                        }
                    }
                });
    
                for(var pair of postData.entries()) {
                    console.log(pair[0]+ ', '+ pair[1]);
                }
    
                xhr.send(postData);
            })
        }
    })
    
    	function loadmore_get_posts(){
    		$args = json_encode($_POST['query'], true );
    		$args['paged'] = $_POST['page'] + 1;
    		$args['post_status'] = 'publish';
    
    		query_posts( $args );
    	
    		if(have_posts()) :
    			while(have_posts()): the_post();    
    			the_post();?>
    			
    			<div class="news__table-item">
                    <div class="news__table-img-container">
                        <img src="<?php the_post_thumbnail_url(); ?>" alt="Картинка новости" class="news__table-img"> 
                    </div>
    				<div class="news__table-content">
    					<span class="news__table-category">
    						<?php
    							foreach((get_the_category()) as $category) {
    								echo $category->cat_name . ' ';
    							}
    						?> 
    					</span>
    					<a href="<?php the_permalink(); ?>" class="news__table-title">
    						<?php the_title(); ?>
    					</a>
    					<p class="news__table-desc">
    						<?php the_content(); ?>
    					</p>
    					<div class="news__table-date">
    						<?php the_date(); ?>
    					</div>
    				</div>
    			</div>
    			
    			<?php			
    			endwhile;
    		endif;
    		wp_die();
    	}
    	 
    	add_action('wp_ajax_loadmore', 'loadmore_get_posts');
    	add_action('wp_ajax_nopriv_loadmore', 'loadmore_get_posts');
    
    
                        <script>
                            let ajaxurl = '<?php echo admin_url('admin-ajax.php') ?>';
                            let current_page = <?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>;
                            let max_pages = <?php echo $custom_query->max_num_pages ?>;
                            let post_data = <?php echo json_encode($custom_query->query_vars); ?>;
                        </script>

    Я больше склоняюсь в ошибку где-то в написании php-скрипта. Но, в силу отстутствия опыта, не могу ее найти

    • Тема изменена 3 года, 2 месяца назад пользователем avearthasz.
  • Тема «Ajax подгрузка постов работает некорректно.» закрыта для новых ответов.