我希望在使用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
由于某种原因,我在结果中得到了未发布的帖子。因此,我的上述解决方案并不完整。但这似乎很接近。什么会导致未发布的帖子被退回?
最合适的回答,由SO网友:windyjonas 整理而成
您可以尝试将$wp\\u查询存储在cookie或会话变量中。
global $wp_query;
setcookie(\'my_wp_query\', $query_string);
或
global $wp_query;
$_SESSION[\'my_wp_query\'] = $query_string;
并在ajax函数中使用它。