Я не хотел использовать AJAX для этого, но в итоге мне пришлось. Решение, которое я придумал, заключается в использовании AJAX для создания URL-адреса «перенаправления» и добавления аргументов запроса с использованием add_query_arg()
, а затем возврата URL-адреса с параметрами запроса и использования window.location.href
для перенаправления пользователя. Страница перенаправляется с добавленными аргументами запроса, а затем при загрузке страницы WP_Query();
запускается с параметром s=
, содержащим параметры запроса.
Возможно, это не самый эффективный способ или даже правильный способ, но он выполняет свою работу. Если у кого есть другое решение, я бы хотел это услышать.
Пример PHP Функция:
public function user_redirect_by_search() {
$search_arr = array();
parse_str($_POST['search_data'], $search_arr);
$return = array();
$post_type_arr = array();
$post_type_count = 0;
foreach($search_arr['post_type'] as $post_type) {
$post_type_count++;
$post_type_arr[$post_type_count] = $post_type;
}
$redirect_url = add_query_arg(array('post_type' => implode(",", $post_type_arr), 'keywords' => $search_arr['s']), $search_arr['page_url']);
$return['status'] = 1;
$return['redirect_url'] = $redirect_url;
echo json_encode($return);
die();
}
А потом JQuery:
// Post keyword search
jQuery('#searchform').on('submit', function(e) {
e.preventDefault();
var search_data = jQuery(this).serialize();
jQuery.ajax({
type: "POST",
url: ajaxurl,
dataType: 'json',
data: {"action": "user_search", search_data},
success: function(data) {
if(data.status == 1) {
window.location.href = data.redirect_url;
//console.log(data);
} else {
alert("Oops, an error occurred. Please try again or contact the plugin developer.");
console.log(data);
}
}
});
});
Пожалуйста, обратите внимание, что приведенный выше код НЕ введен в эксплуатацию производства, это было просто написано/модифицирован, чтобы показать пример решение вопроса.
Извините, это не поможет. Очевидно, что форма должна быть заключена в элемент формы, а использование 'home_url()' в действии перенаправляет меня во внешний интерфейс сайта. Как указано в вопросе, мне нужно остаться в панели инструментов на той же странице параметров, на которую была отправлена форма. –
Вы хотите внедрить функцию поиска внутри панели администратора (страница параметров)? –