Допустим, URL-адрес: https://example.com/?min_price=100&max_price
max_price
установлен, но пуст. В результате страница продукта будет пустой. Я хочу игнорировать все пустые параметры, поэтому они не будут включены в запрос. Есть ли для этого ловушка, действие или фильтр?
В настоящее время мое решение заключается в использовании template_redirect
и remove_query_arg
:
function your_redirection(){
if(isset($_GET['min_price']) || isset($_GET['max_price'])){
$array = array();
if(isset($_GET['min_price']) && (empty($_GET['min_price']) || !is_numeric($_GET['min_price']) || (is_numeric($_GET['min_price']) && $_GET['min_price'] < 1))){
$array[] = "min_price";
}
if(isset($_GET['max_price']) && (empty($_GET['max_price']) || !is_numeric($_GET['max_price']) || (is_numeric($_GET['max_price']) && $_GET['max_price'] < 1))){
$array[] = "max_price";
}
wp_redirect(remove_query_arg($array, false));
}
}
add_action( 'template_redirect', 'your_redirection' );
с использованием remove_query_arg
для удаления пустых запрос и перенаправление. Проблема в том, что я не думаю, что мой подход достаточно хорош, я даже не могу поставить exit;
в конце функции wp_redirect();
, иначе это не сработает.