我有一个 Wordpress 插件,当搜索多种类型的汽车时,会在 url 中广告相同参数的多个值。
/home/?condition=filter1&condition=filter2&s=
现在我为不同的汽车创建了多个用户角色,并希望向站点添加一个过滤器。此代码适用于 1 个值
function wprdcv_param_redirect() {
$user = wp_get_current_user();
$url_parts = parse_url("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
parse_str($url_parts['query'], $params);
if( ! empty( $user ) && count( array_intersect( [ "userrole1" ], (array) $user->roles ) ) ) {
//Prevent infinite loop
if ($_GET["condition"] == "filter1") return;
$params["condition"] = "filter1";
$params["s"] = "";
}
else {
//Prevent infinite loop
if ($_GET["condition"] == "") return;
$params["condition"] = "";
$params["s"] = "";
}
foreach (array_keys($_GET) as $n) {
$params[$n] = $_GET[$n];
}
// Note that this will url_encode all values
$url_parts['query'] = http_build_query($params);
wp_redirect(http_build_url($url_parts));
exit;
}
add_action('template_redirect', 'wprdcv_param_redirect');
当我添加以下内容时,它会覆盖该值并仅显示最后一个:
if ($_GET["condition"] == "filter1") return;
$params["condition"] = "filter1";
$params["condition"] = "filter2";
$params["s"] = "";
我该如何编辑它,以便它向我显示 2 个具有不同值的相同参数?
编辑:
我添加了以下内容,它就像一个魅力!
$params["condition"][] = "Filter1";
$params["condition"][] = "Filter2";
谢谢各位!@CBroe & @Vincent Decaux
/home/?condition%5B0%5D=Filter1&condition%5B1%5D=Filter2&s= 证明是完美的工作