Задать вопрос
@Lord_Dantes

При кастомной подгрузке постов Wordpress кидает экран вниз почему?

В интернете нашел способ ajax подгрузке постов при клике на ссылку. Но типо при клике на нее экран кидает в футер, что нужно скинуть? Примерно может знает почему оно так происходит и может поставить якорь на последний пост чтобы не кидало? Нужно чтобы хотя бы оставалось на месте и типо видно было как посты подгрузились. Спасибо.

Код постов в целом и кнопки.
код1

<div class="row">
				<div class="col-md-12 text-center">
					<div class="button-group filter-button-group mb-4 case-adapt">
						<p class="button-activate">Фильтр<span class="button-triangle"></span></p>
						<button class="case-btn" data-filter="*">All</button>
						<button class="case-btn" data-filter=".Android">Android App</button>
						<button class="case-btn" data-filter=".CryptoCurrency">CryptoCurrency</button>
						<button class="case-btn" data-filter=".eCommerce">eCommerce</button>
						<button class="case-btn" data-filter=".ERP">ERP</button>
						<button class="case-btn" data-filter=".iOS">iOS App</button>
						<button class="case-btn" data-filter=".IoT">IoT</button>
						<button class="case-btn" data-filter=".Online">Online Platform</button>
						<button class="case-btn" data-filter=".Social">Social Networks</button>
						<button class="case-btn" data-filter=".Web">Web Application</button>
					</div>
					<div class="grid">
						<div class="grid-sizer"></div>
						<?php
					/*
					 * Template name: Моя галерея
					 */
					$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1;
					$params = array(
						'posts_per_page' => 4, // количество постов на странице
						'post_type'       => array('web-development', 'mobile-development', 'ux'),
						// тип постов
						'paged'           => $current_page // текущая страница
					);
					query_posts($params);

					$wp_query->is_archive = true;
					$wp_query->is_home = false;
					$counter = 0;

					while(have_posts()): the_post(); ?>

						<div class="grid-item <?php $post_id = get_the_ID(); ?><?php $cur_terms = get_the_terms( $post_id, 'platform' ); foreach( $cur_terms as $cur_term ){ echo $cur_term->name .' '; }?>">
							<?php
							if ( $counter % 2 == 0 ):

								get_template_part('template', 'one');
							else:

								get_template_part('template', 'two');
							endif;
							$counter++;
							?>
						</div>

					<?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; ?>
				</div>
				<div class="projects-add_btn">
					<a href='javascript:void(0);' id="true_loadmore" class="work-btn"><?php if (qtrans_getLanguage() == 'ru'): ?>
					<?php echo "Загрузить ещё"; ?>
				<?php elseif (qtrans_getLanguage() == 'ua'): ?>																																									<?php echo "Завантажити бiльше"; ?>
				<?php elseif (qtrans_getLanguage() == 'fi'): ?>
						<?php echo "Load more"; ?>																																										<?php else : ?>
						<?php  echo "Load more"; ?>																																							<?php endif; ?></a>
				</div>
			</div>



Фyнкция в functions.php
kod2

function true_load_posts(){

	$args = unserialize( stripslashes( $_POST['query'] ) );
	$args['paged'] = $_POST['page'] + 1; // следующая страница
	$args['post_status'] = 'publish';

	// обычно лучше использовать WP_Query, но не здесь
	query_posts( $args );
	// если посты есть
	if( have_posts() ) :

		// запускаем цикл
		while( have_posts() ): the_post(); ?>

			<div class="grid-item <?php $post_id = get_the_ID(); ?><?php $cur_terms = get_the_terms( $post_id, 'platform' ); foreach( $cur_terms as $cur_term ){ echo $cur_term->name .' '; }?>">
							<?php
							if ( $counter % 2 == 0 ):

								get_template_part('template', 'one');
							else:

								get_template_part('template', 'two');
							endif;
							$counter++;
							?>
						</div>

		<?php endwhile;

	endif;
	die();
}


add_action('wp_ajax_loadmore', 'true_load_posts');
add_action('wp_ajax_nopriv_loadmore', 'true_load_posts');



Ajax
kod3

jQuery(function($){

	$('#true_loadmore').click(function(){
		event.preventDefault();
		$(this).text('Load...'); // изменяем текст кнопки, вы также можете добавить прелоадер
		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('Загрузить ещё');
					$('.grid script').before(data); // вставляем новые посты
					current_page++; // увеличиваем номер страницы на единицу
					if (current_page == max_pages) $("#true_loadmore").remove(); // если последняя страница, удаляем кнопку
					jQuery('.grid').isotope('destroy');
					jQuery('.grid').isotope({
						itemSelector: '.grid-item',
						percentPosition: true,
						masonry: {
							columnWidth: '.grid-sizer'
							}
						});

					// filter items on button click
					jQuery('.filter-button-group').on( 'click', 'button', function() {
						var filterValue = jQuery(this).attr('data-filter');
						jQuery('.grid').isotope({ filter: filterValue });
					});
				} else {
					$('#true_loadmore').remove(); // если мы дошли до последней страницы постов, скроем кнопку
				}
			}
		});
	});

});

  • Вопрос задан
  • 39 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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