2017-11-20 6 views
0

WordPressのWebサイトに3つの記事を読み込むための簡単なAjax呼び出しがあります。毎回最初の3つの結果をクリックすると常にデータベースの最初の投稿はスキップされます。WP po​​sts_per_page&offset最初の投稿をスキップする

Ajaxはページ0に設定され、ページあたり3つの投稿が追加されます。だから出力は最初の3つの投稿だと思っていますが、最初の投稿をスキップして次の3つを出力します。それから、そこから正しく動作します。

ページ0の最初の結果をスキップするのはなぜですか?

Ajaxのコール - 私はあなたのコードが常にオフセットに1を加えているので、それがあると思い

function more_post_ajax(){ 
    $offset = $_POST["offset"]; 
    $ppp = $_POST["ppp"]; 
    header("Content-Type: text/html"); 

    $args = array(
      'post_type' => 'showroom', 
      'posts_per_page' => $ppp, 
      'offset' => $offset, 
    ); 
    $loop = new WP_Query($args); 

      while ($loop->have_posts()) { 
       $loop->the_post(); 
        echo "<h3>";the_title();echo "</h3> <hr>"; 
      } 
      exit; 
} 
add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax'); 
add_action('wp_ajax_more_post_ajax', 'more_post_ajax'); 

答えて

1

から

var ajaxUrl = "<?php echo admin_url('admin-ajax.php')?>"; 
var page = 0; // What page we are on. 
var ppp = 3; // Post per page 

$("#more_posts").on("click",function(){ // When Load More Button is pressed. 
    event.preventDefault(); 

    $("#more_posts").attr("disabled",true); // Disable the button, temp. 
    $.post(ajaxUrl, { 
     action:"more_post_ajax", 
     offset: (page * ppp) + 1, 
     ppp: ppp 
    }).success(function(posts){ 
     page++; 
     if(posts === '') { 
      $("#more_posts").hide(); 
     } else { 
      $(".showroom-loop").append(posts); // Which div to insert the posts 
     } 
     $("#more_posts").attr("disabled",false); 
    }); 
}); 

これは私のWPの引数の関数です。あなたのJavaScriptで

は、このべきではありません。

offset: (page * ppp) + 1, 

offset: (page * ppp), 
+0

ああ愚かな間違い!ご協力いただきありがとうございます – SamXronn

関連する問題