Кнопка AJAX load more возвращает одни и те же сообщения каждый раз

AJAX load more возвращает одни и те же сообщения каждый раз. Проблема в WP_Query, потому что этот код работает, когда я его удаляю. Я не могу понять, что не так с моим WP_Query.

Это часть index.php

$category_id = get_cat_ID('Događaji');
$exlude_latest_featured_post = array($featuredID);
$args = array(
'category__not_in' => array($category_id),
'post__not_in' => $exlude_latest_featured_post,
'posts_per_page' => 10,
);

$main_loop = new WP_Query ( $args );
while ($main_loop->have_posts()) : $main_loop->the_post(); ?>

<?php get_template_part('loop/content'); ?>

<?php endwhile; ?>

<div class="listing-more-posts">
<a>
<?php
$link_label = '<img class="listing-more-posts-image" src="'. get_bloginfo('template_directory') .'/images/more-posts-2.gif" alt="Učitaj još postova">';
next_posts_link($link_label);
?>
</a>
</div>

Это мой файл loadmore.js. Как я уже сказал, он прекрасно работает, когда я удаляю WP_Query в index.php

jQuery(function($){

// Ajax (next) page load
var pageLoading = false;
function loadContent($link){

if( pageLoading == true ){
return;
}

pageLoading = true;

$.ajax({
type: "get",
url: $link.attr("href"),
dataType: "html",
success: function(response){
var html = $('<div>').html(response);

// 'standard' blog layout
var $articles = $(html).find("#post-listing article");

//$("#main").append(articles);
$link.closest(".listing-more-posts").before($articles);

// remove old nav wrapper (new one is added with new content)
// if( $link != null ){
$link.closest(".listing-more-posts").html($(html).find(".listing-more-posts").html());
// }

pageLoading = false;
}
});
}

$("body").on("click", ".listing-more-posts a", function(e){
e.preventDefault();
console.log("click");

// var $link = $(this);
$(this).parent().addClass('loading');
loadContent($(this));
});
});

Я искал ответ, но не смог его найти. Из ответов, которые я нашел до сих пор, я думаю, что мне нужно что-то сделать с номером отслеживания страницы, но я не уверен, как это сделать.

Спасибо

0

Решение

Я понял.

Я нарушал основной цикл, делая вещи сверху. Я продолжил поиск и через некоторое время обнаружил один действительно полезный хук действия per_get_posts, и это было решением моей проблемы.

Этот хук вызывается после создания объекта переменной запроса, но
до того, как фактический запрос выполняется.
— WordPress Codex

Все, что я должен был сделать сейчас, это две вещи:

function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$category_id = get_cat_ID('Događaji');
$query->set( 'category__not_in', array($category_id) );
}
}
add_action( 'pre_get_posts', 'exclude_category' );
//Exclude latest featured post from showing in loop
function exclude_latest_post( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$exlude_latest_featured_post = array($featuredID);
$query->set( 'post__not_in', $exlude_latest_featured_post );
}
}
add_action( 'pre_get_posts', 'exclude_latest_post' );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]