2013-04-10 92 views
0

我有一个问题,让我秃顶atm。我有一个ajax调用,处理一个循环来处理一些查询并为我返回帖子。WP_Query与ajax处理程序返回相同的帖子

到目前为止好,但第一次的用户看到我们应该加载10个职位的页面,然后我们想点击一个按钮,要求5个。

到目前为止这么好。

但是当我们请求5个更多的帖子时,我们再次获得5个第一个帖子。

我batchloop

<?php 
// Our include 
define('WP_USE_THEMES', false); 
require_once('../../../wp-load.php'); 

// Our variables 
$posts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0; 
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0; 
$category = (isset($_GET['category_name'])) ? $_GET['category_name'] : 0; 

var_dump($posts); 

$args = array( 
    'posts_per_page' => $posts, 
    'category_name' => $category, 
    'post_status' => 'publish', 
    'orderby'  => 'date', 
    'order'   => 'DESC', 
    'paged'   => $page 
); 

query_posts($args); 

// $query = new WP_query($args); 

// our loop 
if (have_posts()) { 

    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts($args); 

     while (have_posts()){ 
       the_post(); 

       get_template_part('thumbs', get_post_format()); 
     } 
} 

// unset($page, $posts, $category); 

// wp_reset_postdata(); 
wp_reset_query(); 
?> 

有谁看到什么即时做错了什么?

编辑:

批量处理

function _batchhandler() { 
     var getamount = localStorage.getItem('amount'); 

     console.log('amount of posts to retrive ' + JSON.parse(getamount)); 

     // Ajax call 
     $.ajax({ 
      type: 'GET', 
      data: { 
       posts: getamount, 
       page: page, 
       category: 'work' 
      }, 
      dataType: 'html', 
      url: 'http://dev.xxx.se/wp-content/themes/xxx/batch.php', 
      beforeSend: function() { 
       _setHeader; 
       if(page != 1) { 
        console.log('Loading'); 
        // Show the preloader 
        $('body').prepend('<div class="preloader"><span class="rotate"></span></div>'); 
       } 
       // If we reach the end we hide the show more button 
       if(page >= total) { 
        $('.load').hide(); 
       } 
      }, 
      success: function(data) { 
       console.log(page); 
       var scroll = ($('.thumb').height() * posts); 
       // If thumbs exist append them 
       if(data.length) { 
        // Append the data 
        $('#batch').append(data); 

        // Remove the crappy width and height attrs from the image * Generated by WP * 
        $('img').removeAttr('height').removeAttr('width'); 

        // Animate each new object in a nice way 
        (function _showitem() { 
         $('#batch .thumb:hidden:first').addClass('show', 80, _showitem); 

         // On the last request do load any more 
         loading = false; 
        })(); 

        // Remove the preloader 
        $('.preloader').fadeOut(200, function() { 
         $('.preloader').remove(); 
        }); 
       } 
       // return false; 
      }, 
      complete: function() { 
       // Delete storage 
       localStorage.clear(); 

       // Update the scroller to match the updated content length 
       if (scroller) 
        setTimeout("scroller.refresh()", 300); 

       // Initalize the load more button 
       _clickhandler(); 
      }, 
      error: function() { 
       console.log('No page found'); 
      } 
     }); 
    } 

和我的负荷更按钮功能

$('.load').on('click', function(event) { 
      event.preventDefault(); 
      // Delete storage 
      localStorage.clear(); 

      if(!loading) { 
       loading = true; 
       // Increase our pagenumber per click 
       page++; 
       count++; 
       // Remove preloader 
       $('.preloader').remove(); 

       setTimeout(function() { 
        $('#batch').css({ 
         '-webkit-transform' : 'translateY(-' + ($('#batch li').outerHeight() * count) + 'px)' 
        }); 
       }, 30); 

       // Clear storage and set a new 
       localStorage.setItem('amount', JSON.stringify(amount.medium)); 
       var getamount = localStorage.getItem('amount'); 

       // Send the request to the handler     
       _batchhandler(page);  
      }  

     }); 

一切似乎都很好,前10个(1-10)员额负荷为应,但第一次点击“加载更多”,我们会得到下5个结果,但结果是第一次加载的帖子(5-10)。如果我们点击“加载更多”再一次,我们得到正确的结果

+0

应该工作,你可以粘贴你使用的JS吗? – tobbr 2013-04-10 08:22:35

+0

查看我的编辑.... – Jonas 2013-04-10 08:31:59

+0

将来,将所有的AJAX调用重定向到admin-ajax。它有很多好处,尤其是安全。只是一句话。 – 2013-04-11 17:52:50

回答

0

我不认为你已经定义页面开始值,将其设置为1,在你的脚本开始,所以当它增加点击它转到第2页。否则它只会得到第一页。

+0

没有设置,并且每次点击加载更多按钮时增加页面。 一切正常,只是点击更多的第一次加载我们得到了相同的结果 – Jonas 2013-04-10 09:40:47

+0

OK,但它不是在您发布的代码,它可以作用于第二次点击会提示它是第一个检索一个网页时,其实设置点击第2页 - 第二次 - 当你想要的是第一次点击页面2。 – Mark 2013-04-10 10:42:12

+0

这是什么发生, 这是我的日志 ONLOAD 量的职位以检索10 页面1 ONCLICK(FIRST) 职位的量以检索5 加载 第2页 – Jonas 2013-04-10 10:46:16

0

你在获取你的后端了错误的参数,它们都化解为0 AJAX调用发送以下参数:

帖子,页面,类别

但在你reciever后端你”再试图获取这些变量:

numPosts,PAGENUMBER,CATEGORY_NAME

所以下面:

$posts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0; 
$page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0; 
$category = (isset($_GET['category_name'])) ? $_GET['category_name'] : 0; 

应该是:

$posts = (isset($_GET['posts'])) ? $_GET['posts'] : 0; 
$page = (isset($_GET['page'])) ? $_GET['page'] : 0; 
$category = (isset($_GET['category'])) ? $_GET['category'] : 0; 

或者更改参数的名称在Ajax调用匹配在后台的人。

+0

Sry,我发布的代码有点旧了 – Jonas 2013-04-10 12:42:54