2015-11-19 1 views
0

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

Это часть 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

Возьмите копию $ ссылку или создать укупорочное – mplungjan

+0

Спасибо mplungjan за то, чтобы помочь мне, но я все еще не уверен, что я должен делать. Можете ли вы описать это мне немного лучше, пожалуйста. Спасибо –

+0

Попробуйте сначала 'function loadContent ($ aLink) {var $ link = $ aLink;' – mplungjan

ответ

0

Я получил его.

Я нарушал основную петлю, делая вещи сверху. Я countinued искать и через некоторое время я нашел один очень полезные действия крюка под названием 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');