Get_Posts()在函数中不起作用。php

时间:2013-12-06 作者:jetlej

如果我在任何主题模板中使用以下函数,它将按预期工作。但是,在我的函数中尝试在AJAX函数中使用它时。php,则返回空。

$args = array (
        \'numberposts\' => 10,
        \'post_type\' => array(\'topic\',\'reply\'),
        \'author\' => 454
    );
$user_posts = get_posts($args);
有什么想法吗?

以下是完整功能:

function he_delete_user(){

    $args = array (
        \'numberposts\' => 10,
        \'post_type\' => array(\'topic\',\'reply\'),
        \'author\' => 454
    );
    $user_posts = get_posts($args);

    if (empty($user_posts)){
        $response_array[\'status\'] = \'false\';    
        echo json_encode($response_array);
    }
    else{
        // delete all the user posts
        foreach ($user_posts as $user_post) {
            wp_delete_post($user_post->ID, true);
        }
        $response_array[\'status\'] = \'success\';    
        echo json_encode($response_array);
    }
}
add_action(\'wp_ajax_he_delete_user\',\'he_delete_user\');

1 个回复
最合适的回答,由SO网友:jetlej 整理而成

这是绷带,不是固定的。但是WP\\u查询中似乎有一个bug,所以我必须在实际运行查询之前修改查询,以便不忽略post\\u类型参数。

1) 我将get\\u posts()更改为WP\\u查询

2) 我将此添加到我的函数中。php文件:

function ban_parse_wp_query( $query ) {
    $query->set( \'post_type\', array(\'topic\',\'reply\') );
    return $query;
}
3)然后,我在运行之前用该操作修改了查询,然后在运行之后删除该操作,这样就不会影响任何其他查询:

add_filter( \'pre_get_posts\', \'ban_parse_wp_query\' );
$user_posts = new WP_Query($args);
remove_filter( \'pre_get_posts\', \'ban_parse_wp_query\' );

结束