使用GET_TEMPLATE_PART()会返回加载选项的‘Inid Argument’

时间:2014-04-22 作者:Unix

我想避免include_once() 为了使用主题检查删除一条信息,当我尝试使用get_template_part(\'custom-options\'); 它返回消息:

«为[…]中的foreach()提供的参数无效/自定义选项。php第83行»。

如果代码是典型的:

//[...]
<?php foreach ($options as $value) { //#83
  switch ($value[\'type\']) { case "open": ?>
<?php break; case "close": ?>
<?php break; case "title": ?>
    <h3><?php echo $value[\'name\']; ?></h3>
//[...]
我不确定,但可能不允许加载选项。

然后我试着load_template( trailingslashit( get_template_directory() ) . \'custom-options.php\' ); 同样的结果。

My questions are:是否可以使用加载选项文件get_template_part()?

如果没有,是否有方法加载选项文件,同时使用主题检查插件使其有效?

2 个回复
SO网友:Pieter Goosen

你应该在这里读一读。Kaiser在他的博客上写了一篇完整的文章

我引用这句话

尽管get\\u template\\u part类似于PHP include或require,但不应使用它来包含主题选项代码、侧栏注册、自定义小部件等内容。get\\u template\\u part函数只应用于获取模板部件。

你可以去看看完整的文章here

SO网友:Rarst

您有范围问题。当文件包含在函数中时,它具有该函数的作用域。

这就是为什么load_template() (WP trickle down to中的所有模板“including”函数)声明WP全局的数量,以便可以在模板内访问它们。

因此,您要么通过globals传递数据,要么使用单独的模板文件重新编写代码,要么使用其他方法(例如专用的非PHP模板文件)。

结束

相关推荐