get_query_var not works

时间:2014-06-29 作者:Tina88

我想$\\u在URL中获取一个参数,因此我必须使用query\\u vars。首先,我在函数中添加了以下行。php:

function add_query_vars_filter( $vars ){
  $vars[] = "getvar";
  return $vars;
}
add_filter( \'query_vars\', \'add_query_vars_filter\' );
之后:

if(get_query_var(\'getvar\')) {
    die(\'DIE\');
}
如果我键入域。com/?getvar=1,什么都没有发生。问题出在哪里?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您的筛选器:

function add_query_vars_filter( $vars ){
  $vars[] = "getvar";
  return $vars;
}
add_filter( \'query_vars\', \'add_query_vars_filter\' );
是正确的。当WordPress开始组装查询变量列表时,此函数将向列表中添加“getvar”。

但是,您可以立即检查变量是否在到达该点之前设置好。这个query_vars 筛选尚未发生。这表明您对事件/筛选器的理解不完整。当你添加过滤器时,它不会执行里面的内容,就像如果我告诉你一旦你付了钱就要吃食物一样,你会等到你付了钱才吃,你不会马上吃。

因此:

当“query\\u vars”过滤器出现时,您告诉WordPress执行一个函数,您检查是否存在非法的查询变量“getvar”,然后,“query\\u vars”过滤器出现,并且该函数“getvar”成为合法的安全查询变量,因此您需要检查查询变量after 该函数被执行,只是在文件的更深处不会执行。你应该参与一个动作,比如init 然后在那里进行检查。

结束

相关推荐