在PHP中,当您include
一个文件,您在当前范围内使用的变量可在包含的文件中使用。
使用WordPress时get_template_part()
, 变量在“包含”文件中不再可用。
get_template_part()
呼叫locate_template()
然后调用load_template()
, 然后执行require
或require_once
.
如果WordPress最终调用PHPrequire
, 为什么变量不再工作?这与实际require
?
最合适的回答,由SO网友:Doug Wollison 整理而成
在函数调用中加载的脚本只能在where的直接作用域内工作require
或include
已使用。所以实际上只有当load_template()
将对加载的脚本进行访问(除非使用global $myvar
当然)。
原因是vars喜欢$post
和$wp_query
脚本可用的原因是load_template()
在加载脚本之前将其全局化。
如果您想确保您的脚本可以访问某些变量global
或将其添加到$wp_query->query_vars
加载前使用数组(不推荐,但取决于任务,它可能是唯一可行的选项),因为在加载脚本之前会将这些数组提取到本地范围。