在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 加载前使用数组(不推荐,但取决于任务,它可能是唯一可行的选项),因为在加载脚本之前会将这些数组提取到本地范围。