Я хочу, чтобы обычный результат поиска был доступен при использовании действия wp_ajax. Есть ли способ выполнить обычный WP_Query для параметров, доступных в текущем запросе?
Это мой текущий код:
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_query, похоже, не настроен. Можно ли получить $ wp_query по умолчанию для параметров текущего запроса?
(Примечание: я не хочу самостоятельно настраивать параметры для WP_Query. Я хочу, чтобы обычный основной запрос запускался.)
Обновить
Кажется, это работает. Но я не уверен, что делаю это правильно. Может кто-то подтвердить, пожалуйста. Я хочу как можно меньше накладных расходов.
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; }
Обновление 2
По какой-то причине я получаю неопубликованные сообщения в результате. Поэтому мое решение выше не является полным. Но, похоже, это близко. Что может привести к возврату неопубликованных должностей?
Вы можете попытаться сохранить $ wp_query в cookie или в переменной сеанса.
global $wp_query; setcookie('my_wp_query', $query_string);
или
global $wp_query; $_SESSION['my_wp_query'] = $query_string;
и используйте это в вашей функции ajax.