在页面加载时,我想从当前URL中删除特定的查询字符串,这可能吗?是否有特定的功能?
有一个函数remove_query_arg(\'query_key\');
和template_redirect
, 我想我可以用它们,比如。
function abc_redirections() {
$url = "https://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
if (isset($_GET[\'query_string\'])){
if(empty($_GET[\'query_string\']) || !is_numeric($_GET[\'query_string\']) || $_GET[\'query_string\'] < 1){
$url = remove_query_arg(\'query_string\', $url);
}
}
if (isset($_GET[\'query_string_1\'])){
if(empty($_GET[\'query_string_1\']) || !is_numeric($_GET[\'query_string_1\']) || $_GET[\'query_string_1\'] < 1){
$url = remove_query_arg(\'query_string_1\', $url);
}
}
if(isset($_GET[\'query_string_1\']) || isset($_GET[\'query_string_1\'])){
wp_redirect($url);
exit;
}
}
add_action( \'template_redirect\', \'abc_redirections\' );
但这行不通,页面上说;页面不工作,重定向您的次数太多"E;。这种情况有些不对劲。此外,我不确定这是否是获取当前页面URL的正确方法。还有一件事,穿上它不是太糟糕了吗
template_redirect
? 我的意思是,页面已经被抓取,如果满足条件,它会再次重定向,对我来说感觉不干净。
最合适的回答,由SO网友:Polar 整理而成
你不需要 $url = "https://".$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\'];
获取当前URL以删除查询字符串。
你只需要remove_query_arg(\'the_query\', false)
. False,表示它将使用当前URL,您的代码可以缩短为:
function abc_redirections(){
if(isset($_GET[\'query_string\']) || isset($_GET[\'query_string_1\'])){
$array = array();
if(isset($_GET[\'query_string\']) && (empty($_GET[\'query_string\']) || !is_numeric($_GET[\'query_string\']) || (is_numeric($_GET[\'query_string\']) && $_GET[\'query_string\'] < 1))){
$array[] = "query_string";
}
if(isset($_GET[\'query_string_1\']) && (empty($_GET[\'query_string_1\']) || !is_numeric($_GET[\'query_string_1\']) || (is_numeric($_GET[\'query_string_1\']) && $_GET[\'query_string_1\'] < 1))){
$array[] = "query_string_1";
}
wp_redirect(remove_query_arg($array, false));
}
}
而且,你是对的。使用当前方法,页面将变慢,因为它将加载两次。