使用posts_per_pages -1的WP_query问题

时间:2014-08-26 17:49:19

标签: php ajax

它有点奇怪,我需要一些关于WP_query()的问题的帮助或解释;

当您到达特定页面时,我的代码会使用元查询获取所有帖子类型的项目:

     echo 'apple';
     $args = array(
        'post_type' => "family",
        'meta_query' => array(
                array('key' => '_family')
        ),
        'posts_per_page'=>'9000' // number post in this post type: 18 000 entries
    );

    $my_query = new WP_Query($args);
    echo 'banana';

如果我在页面加载时使用..是好的..我看到我的"香蕉"回声。

如果我在" ajax"中执行此操作,则返回值为" null"而且我没有看到我的"香蕉"但我看到" apple"

我已经尝试过posts_per_page =>' 3'它在ajax中运行良好。

试验:

 posts_per_page=>'3'   [OK]
 posts_per_page=>'-1'  [FAILED]
 posts_per_page=>'2000'  [FAILED]

另外,我们在php.ini上有4Go for memory_limit。

如果我运行In" safe_mode On"一切都好。

有什么想法吗?

谢谢你!

修改

$('body.woocommerce-account #famille-list a').on('click',function (e){
    if($(this).data('action') == "edit"){
        e.preventDefault();
        showProgress();
        jQuery.ajax({
        type: "post",
        dataType: "json",
        async: true,
        url: scriptParams.ajaxurl,
        data: {
            action: "edit_family",
            id: $(this).data('id')
        },
        success: function(data) {

            if(data != null && data.success == 1){
                if($('form.myfamily').css('display')=='none'){
                    $('form.myfamily').prev().find('h3').click();
                }
                $('input[name=save_children]').val('Modifier');
                $('input[name=id]').val(data.member.id);
                hideProgress();
            }
        }
    });
  }
});

1 个答案:

答案 0 :(得分:0)

对于AJAX,请求您应该只使用echo传递一个json_encode语句,然后使用die()语句。如果这不能解决您的错误,那至少是一种很好的做法,因为它可以明确您的HTTP响应。

header( "Content-Type: application/json" );
echo json_encode('apple');
die();
// Code should not reach your banana statement

因此,对于您的代码,您应该这样做:

$response = array();
$response[] = 'apple';
 $args = array(
    'post_type' => "family",
    'meta_query' => array(
            array('key' => '_family')
    ),
    'posts_per_page'=>'9000' // number post in this post type: 18 000 entries
);

$my_query = new WP_Query($args);
$response[] = 'banana';

header( "Content-Type: application/json" );
// will return an array with the value ['apple', 'bannana'];
echo json_encode($response); 
die();

另外,你是直接调用PHP文件吗?这是一个WordPress的坏习惯。有一种既定的方法可以处理AJAX请求:http://codex.wordpress.org/AJAX_in_Plugins(它表示它适用于插件,但主题也可以使用它)。一开始有点罗嗦,很难进入,但它更清洁,更灵活。