GET_QUERY_VAR与全局查询变量?

时间:2013-04-18 作者:John

我在函数中定义了查询变量。php使用:

add_filter(\'init\', \'add_query_vars\');

function add_query_vars() {
    global $wp;
    $wp->add_query_var(\'profession\');
}
到目前为止,为了在页面模板中检索查询变量,我一直在使用$profession = get_query_var(\'profession\');. 类似的例子$paged = get_query_var(\'paged\'); 还显示了$paged 变量打开Codex page 对于get_query_var(). 然而,今天我了解到查询变量可以作为全局变量访问。我要做的就是申报global $profession; 我可以开始在模板中的任何地方使用变量的值。在我看来,这是一种更好的访问查询变量的方法,而不需要get_query_var().

是否有充分的理由使用get_query_var() 获取查询变量而不是将其作为全局变量访问?如果没有,那么为什么get_query_var() 甚至存在?

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

get_query_var() 是的包装器$wp_query->get($var);. 但是全球$wp_query 并不总是与请求期间设置的相同。这就是main problem with query_posts().
和其他插件也会无意中覆盖这些变量。我见过插件$i 进入全局命名空间…

返回值不同:

  • $GLOBALS[\'missing_var\']NULL 如果没有这样的变量。严格的类型检查是:if ( NULL !== $GLOBALS[\'missing_var\'] ).
  • get_query_var(\'missing_var\'); 如果该变量不存在,则为空字符串。严格的类型检查是:if ( \'\' !== get_query_var(\'missing_var\').get_query_var() 查看回退值。这在全局变量中是不可能的。

    然后有计划减少WordPress中全局变量的数量。使用API(函数)可能是安全的。另一方面,访问全局变量可能会导致麻烦。

结束

相关推荐

$GLOBALS array for WordPress

有WordPress定义的文件吗$GLOBALS? 我只是好奇WordPress使用它的目的和用途。仅此而已!