WordPress如何使用wp_ajax操作返回正常搜索结果

时间:2013-10-23 作者:PappApp

我希望在使用wp\\u ajax操作时可以使用正常的搜索结果。是否有办法对当前请求中可用的参数执行常规WP\\U查询?

这是我当前的代码:

add_action(\'wp_ajax_nopriv_update_search\', \'ajax_update_search\');
add_action(\'wp_ajax_update_search\', \'ajax_update_search\');
function ajax_update_search() {
    global $wp_query;
    get_template_part(\'loop\');
    exit;
}
我当前的代码没有返回任何内容,因为似乎没有设置$wp\\u查询。是否可以获取当前请求参数的默认$wp\\u查询?

(注意:我不想自己设置WP\\u查询的参数。我想启动正常的主查询。)

Update

这似乎奏效了。但我不确定我的做法是否正确。有人能确认一下吗。我想要尽可能少的开销。

add_action(\'wp_ajax_nopriv_update_search\', \'ajax_update_search\');
add_action(\'wp_ajax_update_search\', \'ajax_update_search\');
function ajax_update_search() {
    global $wp_query, $wp;
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();
    get_template_part(\'loop\');
    exit;
}

Update 2

由于某种原因,我在结果中得到了未发布的帖子。因此,我的上述解决方案并不完整。但这似乎很接近。什么会导致未发布的帖子被退回?

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

您可以尝试将$wp\\u查询存储在cookie或会话变量中。

global $wp_query;
setcookie(\'my_wp_query\', $query_string);

global $wp_query;
$_SESSION[\'my_wp_query\'] = $query_string;
并在ajax函数中使用它。

结束