SkyShot
@SkyShot
Фрилансер, интроверт, дизайнер, web-разработчик.

Ajax подгрузка статей. Что не так?

Ребят, вот взял готовый скрипт который был написан уже давненько, установил и вроде как все работает, но не так как надо. Что может быть здесь не так?
Надо чтоб он выводил с одной категории, но не могу понять как это сделать.
И возможно ли сделать так, чтоб была 1 кнопка и работала на 2 функции (так как в шаблоне 2 столбика и в каждом отдельная категория) и подгружала оба

Вот под себя переделал его
Functions.php

function true_loadmore_scripts() {
	wp_enqueue_script('jquery');
 	wp_enqueue_script( 'true_loadmore', get_stylesheet_directory_uri() . '/loadmore.js', array('jquery') );
}
 
add_action( 'wp_enqueue_scripts', 'true_loadmore_scripts' );

function true_load_posts(){
	// News
	$args = unserialize(stripslashes($_POST['query']));
	$args['paged'] = $_POST['page'] + 1;
	$args['post_status'] = 'publish';
	$q = new WP_Query($args);
	 if (have_posts()) : while (have_posts()) : the_post(); ?>
			<div class="container">
				<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
				<?php the_excerpt(); ?></p></div>
			</div>
			<?php
		endwhile;
	endif;
	wp_reset_postdata();
	die();
}
 
add_action('wp_ajax_loadmore', 'true_load_posts');
add_action('wp_ajax_nopriv_loadmore', 'true_load_posts');



Страница с новостями

<div class="news__right">
      <?php query_posts('category__in=1&showposts=4&order=DESC'); ?>
      <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
        <?php the_excerpt(); ?>
      <?php endwhile;?>
      <?php if (  $wp_query->max_num_pages > 1 ) : ?>
		<script>
			var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
			var true_posts = '<?php echo serialize($wp_query->query_vars); ?>';
			var current_page = <?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>;
			var max_pages = '<?php echo $wp_query->max_num_pages; ?>';
		</script>
	<?php endif; ?>
  	<? else: ?>
      <h3>
        <?php _e('К сожалению, по Вашему запросу ничего не найдено.'); ?>
      </h3>
    <?php endif; ?>
    <?wp_reset_query();?>
      </div>


JS

jQuery(function($){
	$('#true_loadmore').click(function(){
		$(this).text('Загружаю...'); // изменяем текст кнопки, вы также можете добавить прелоадер
		var data = {
			'action': 'loadmore',
			'query': true_posts,
			'page' : current_page
		};
		$.ajax({
			url:ajaxurl, // обработчик
			data:data, // данные
			type:'POST', // тип запроса
			success:function(data){
				if( data ) { 
					$('#true_loadmore').text('Загрузить ещё').before(data); // вставляем новые посты
					current_page++; // увеличиваем номер страницы на единицу
					if (current_page == max_pages) $("#true_loadmore").remove(); // если последняя страница, удаляем кнопку
				} else {
					$('#true_loadmore').remove(); // если мы дошли до последней страницы постов, скроем кнопку
				}
			}
		});
	});
});

  • Вопрос задан
  • 628 просмотров
Пригласить эксперта
Ответы на вопрос 2
SkyShot
@SkyShot Автор вопроса
Фрилансер, интроверт, дизайнер, web-разработчик.
Ладно, с подгрузкой определенной категории я разобрался. Надо было поставить query_post вместо have_post
Остается одна задача в плане 1 кнопки на 2 функции
Ответ написан
Можно в функцию true_load_posts() вписать еще один параметр $args['название_таксономии'] = 'название_терма'; Или в вашем случае категория и название категории.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы