如果我在任何主题模板中使用以下函数,它将按预期工作。但是,在我的函数中尝试在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\');
最合适的回答,由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\' );