2013-12-12 2 views
0

여기에 무슨 일이 일어나고 있는지 혼란 스럽습니다. 11 개의 게시물이 있습니다. 처음에는 3 개가로드되고 3 개는 페이지 하단으로 스크롤 할 때마다로드됩니다. 이건 괜찮아.Wordpress 루프에 게시물이 부족합니다.

버튼을 클릭하고 처음 3 개의 게시물을 페이지에 다시 동적으로로드 할 때 문제가 발생합니다. .html (데이터)를 통해로드됩니다.

저는 아카이브라고하는 "페이지"에서이 작업을 수행하고 있습니다.

마치 아카이브 페이지에서 이전에 11 개의 게시물을 모두 표시했다는 것을 알고 페이지를 새로 고치지 않으면 다시 시작하지 않습니다.

루프를 다시 설정하거나 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 또는 서버 사이드에 있는지, 어떻게 처리하는지, 더 많은 게시물을 검색하는 호출이 어떻게 처리되는지, 그리고 누가 서버 –

+0

@CarlosRobles 몇 가지 코드를 추가했습니다. 처음으로 코드를 추가하지 않은 이유는 필자가 놓친 루프 논리로 보였고 나에게 설명해야했기 때문입니다. 마찬가지로 나는 워드 프레스 루프를 리셋하는 어떤 종류의 클릭 이벤트를 바인딩 할 수있다. – UzumakiDev

답변

0

버튼을 클릭하고 페이지의 첫 번째 3 개의 게시물을 다시 동적으로로드하면 가변 오프셋을 재설정해야합니다. 또한 웨이 포인트를 새로 고칩니다.

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

만약 작동하지 않는다면, 글타래의 숫자에는 오류가 없지만 모든 오류가 발생하지 않도록하는 다른 오류가있을 수 있습니다.

당신이 어떤 코드가 도움이 될

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

감사합니다. 나는 그것을 시도하고 여전히 작동하지 않는다. 페이지를 다시로드하고 한 번 스크롤하여 다른 3 개의 게시물을로드하고 아약스 버튼을 클릭하면 원래 3 개의 게시물을 컨테이너에 다시로드하지만, 그렇지 않은 것처럼 말한다. 더 이상 웨이 포인트를 인식합니다. – UzumakiDev

+0

업데이트를 확인하십시오 –

+0

그래, 그래, 뭔가 분명히 웨이 포인트가 잘못되었을 때, 아약스 버튼을 클릭하면 경고가 더 이상 작동하지 않습니다. – UzumakiDev

관련 문제