2013-12-12 6 views
0

Я в замешательстве относительно того, что здесь происходит, у меня есть 11 сообщений, с 3 первоначально загруженными и 3, которые загружаются каждый раз, когда я просматриваю нижнюю часть страницы, пока не покажутся все 11. Это отлично.Wordpress цикл заканчивается сообщений?

Проблема возникает, когда я нажимаю кнопку и динамически загружаю первые 3 сообщения на страницу еще раз. Это загружается через .html (данные).

Я делаю это на странице, называемой архивом.

Это как если бы страница архива знала, что я отобразил все 11 сообщений раньше и отказывается начинать заново, если не обновить страницу.

Как сбросить цикл или сообщить Wordpress, что я хочу начать с 3-го сообщения?

jQuery(document).ready(function($){ 
    $("a.sort-all").bind("click", function(e) { 
     load_posts(this); 
     e.preventDefault();     
    }); 

    function load_posts() { 
     var ajax_url = $('.sort-all').attr('data-all-url'); 
     $.ajax({ 
      dataType: "HTML", 
      url: ajax_url, 
      type:'POST', 
      data:{ 
       action: 'data_click_all', 
       offset: offset 
      }, 
      success:function(data) { 
       $('#content').html(data); 
      } 
     }); 

    } 

    var ajax_url = $('.sort-all').attr('data-all-url'); 
    var offset = 0; 
    $('#content').waypoint(function(direction) { 
     if(direction === 'down'){ 
      offset = parseInt(offset) + 3; 
      $.ajax({ 
       dataType: "HTML", 
       url: ajax_url, 
       type:'POST', 
       data:{ 
        action: 'data_scroll_all', 
        offset: offset 
       }, 
       success:function(data) { 
        $('#content').append(data); 
        $.waypoints('refresh'); 
       } 
      }); 
     } 
    }, { 
     offset: 'bottom-in-view' 
    }); 
}); 

if (!class_exists('load_posts')) { 
    class load_posts { 
     /** 
     * PHP 4 Compatible Constructor 
     */ 
     function load_posts(){$this->__construct();} 
     /** 
     * PHP 5 Constructor 
      */  
     function __construct(){ 
      add_action('wp_ajax_data_scroll_all', array(&$this, 'data_scroll_all')); 
      add_action('wp_ajax_nopriv_data_scroll_all', array(&$this, 'data_scroll_all')); 
      //----// 
      add_action('wp_ajax_data_click_all', array(&$this, 'data_click_all')); 
      add_action('wp_ajax_nopriv_data_click_all', array(&$this, 'data_click_all')); 
     } 

     function data_click_all(){ 
      global $post; 
      $offset = $_POST['offset']; 
      $args = array('posts_per_page' => 3, 'offset' => $offset, 'category__not_in' => 1,'orderby' => 'date'); 
      $myposts = get_posts($args); 
      foreach($myposts as $post) { 
       setup_postdata($post); 
       get_template_part('content-archive'); 
      } wp_reset_query(); 
      die(''); 
     } 

     function data_scroll_all(){ 
      global $post; 
      $offset = $_POST['offset']; 
      $args = array('posts_per_page' => 3, 'category__not_in' => 1, 'offset' => $offset, 'orderby' => 'date'); 
      $myposts = get_posts($args); 
      foreach($myposts as $post) { 
       setup_postdata($post); 
       get_template_part('content-archive'); 
      } wp_reset_query(); 
      die(''); 
     } 


    } 
} 
if (class_exists('load_posts')) { 
    $newload_posts = new load_posts(); 
} 
+2

Некоторый код поможет. – jraede

+0

Я слышал, что если вы действительно этого хотите, Wordpress будет слушать вас. Серьезно, у нас нет кода, мы не знаем, находится ли счетчик в локальном js var или на сервере или как вы справляетесь с ним, и как выполняются вызовы для получения большего количества сообщений, и кто их обрабатывает в server –

+0

@CarlosRobles Я добавил код. Причина, по которой я не добавляла код в первый раз, была потому, что мне показалось, что я ошибался в логике Loop, и мне просто объяснялось. Как я мог связать какое-то событие click, которое сбрасывает цикл wordpress. – UzumakiDev

ответ

0

Когда вы нажимаете кнопку и динамически загружаете первые 3 сообщения на страницу снова, вам необходимо сбросить смещение переменной. Также обновите путевые точки.

$("a.sort-all").bind("click", function(e) { 
     offset=0; 
     load_posts(this); 
     $.waypoints('refresh'); 
     e.preventDefault();     
    }); 

, если он не работает, proably вы не имеете ошибку с количеством сообщений, а другая ошибка, которая предотвращает все, чтобы работать.

пожалуйста, добавьте предупреждение при входе в путевой

$('#content').waypoint(function(direction) { 
     alert("current: "+offset); 
///... 
+0

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

+0

проверить обновление –

+0

Итак, что-то определенно неправильно с путевыми точками, при нажатии кнопки ajax предупреждение перестает работать. – UzumakiDev

Смежные вопросы