Valonix
@Valonix
Back end / Front end developer

Как подгружать посты Ajax в Wordpress?

На сайте есть список категорий и постов. Все это реализовано с помощью isotope isotope.metafizzy.co

Имеется такой код
<div class="isotope">
		<?php $photo_query = new WP_Query (array('paged' => get_query_var('paged'), 'post_type' => 'photo', 'posts_per_page'=> 11, 'orderby'=>'rand')); ?>
			<?php if($photo_query->have_posts()) { 
					while($photo_query->have_posts()) { 
						$photo_query->the_post(); 
						$id = get_the_ID(); 
						$portfolio_cats = wp_get_object_terms($id, 'photo-cats');
						$url = wp_get_attachment_url(get_post_thumbnail_id($post->ID));
                    	$image  = aq_resize($url, 400, 259, true);
						global $post;
						?>
			//Отдельный пост
			<div class="element-item <?php foreach($portfolio_cats as $portfolio_cat) { echo ' term_id_' . $portfolio_cat->term_id; } ?>" data-category="transition">
				<a href="<?php the_permalink();?>">
					<img src="<?=$image;?>" alt="item" height="100" class="img-responsive">
					<div class="caption">
						<h3 class="name"><?php the_title();?></h3>
						<p><?=strip_tags(mb_substr($post->post_content, '0', '150')); ?>...</p>
					</div>
				</a>
			</div>
                         //закончился пост
			<?php }?>
	    <?php }?>
	    <?php
        wp_reset_query();
        wp_reset_postdata();
        ?>
		<div class="element-item <?php foreach($portfolio_categories as $cat) { echo ' term_id_' . $cat->term_id; }?> " data-category="actinoid">
			<a href="<?php echo get_page_link(10); ?>" target="_blank" class="more-works-btn">
			<span><i>ЕЩЕ РАБОТЫ</i></span></a>
		</div>


		</div>


Как мне без плагинов подгружать посты? Не могу нагуглить нормальное решение.
  • Вопрос задан
  • 7967 просмотров
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
https://wordpress.org/plugins/ajax-load-more/

Чем не устраивает? Либо посмотрите исходники и попробуйте реализовать схожим образом.
Ответ написан
@Souvel1
Web-программист. Разрабатываю на WordPress.
Делал на сайте:
4dance.by
В функцию передаешь данные поста и он корректно появляется.
function testajf(blockposts) {
	var blockcount = blockposts.length;
	var i = 1;
	while ( i < blockcount ) {
		var $elems = getItemElement(blockposts[i]);
		$container.append( $elems )
		.isotope( 'appended', $elems );
		i++;
	}
	return false;
}


Чтобы не приводить полный код функции, вот ссылка на файл, который отвечает за ajax подгрузку:
new4.4dance.by/wp-content/themes/fdance/js/loadmore.js

И ещё вчитался в твой приведённый код, что-то ты чудишь в этом месте:
wp_reset_query();
wp_reset_postdata();

Если ты используешь query_posts() - то wp_reset_query, а если new WP_Query() - wp_reset_postdata().
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 12:53
1000 руб./за проект
19 апр. 2024, в 12:41
8000 руб./за проект
19 апр. 2024, в 12:05
1500 руб./в час