为什么GET_TEMPLATE_PART()会破坏变量?

时间:2016-02-23 作者:somebodysomewhere

在PHP中,当您include 一个文件,您在当前范围内使用的变量可在包含的文件中使用。

使用WordPress时get_template_part(), 变量在“包含”文件中不再可用。

get_template_part() 呼叫locate_template() 然后调用load_template(), 然后执行requirerequire_once.

如果WordPress最终调用PHPrequire, 为什么变量不再工作?这与实际require?

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

在函数调用中加载的脚本只能在where的直接作用域内工作requireinclude 已使用。所以实际上只有当load_template() 将对加载的脚本进行访问(除非使用global $myvar 当然)。

原因是vars喜欢$post$wp_query 脚本可用的原因是load_template() 在加载脚本之前将其全局化。

如果您想确保您的脚本可以访问某些变量global 或将其添加到$wp_query->query_vars 加载前使用数组(不推荐,但取决于任务,它可能是唯一可行的选项),因为在加载脚本之前会将这些数组提取到本地范围。

相关推荐

为什么我不能执行wp-includes文件夹下的php文件?

我正在调整WordPress以更好地理解它,玩它。出于个人目的。但从加载自定义文件/wp-includes 文件夹无法工作。我试图添加信息。php文件位于/wp-includes 包含phpinfo() 当我尝试通过以下方式在浏览器中访问它时example.com/wp-includes/info.php, 服务器返回错误503。文件夹权限设置为775,文件权限设置为644。Important note: 如果我重命名wp-includes 文件夹,例如wp-include, 那就行了!我联系了主机支持人