为什么INCLUDE(LOCATE_TEMPLATE)起作用而GET_TEMPLATE_PART()不起作用?

时间:2018-02-04 作者:Gary D

父主题使用此构造包含导航栏:

include(locate_template( "components/navigation.php" ));

我更喜欢使用Wordpress约定:

get_template_part( "components/navigation" );

在我的子主题中,从父主题调用文件,但他的代码有效,而我的代码无效。我做错了什么?

更新时间:

周围的代码如下所示:

if ( $navigation_type != \'\' ) {
  include(locate_template( "components/navigation.php" ));
}
此代码加载良好,调试日志为空。如果我把代码改成

if ( $navigation_type != \'\' ) {
  get_template_part( \'components/navigation\' );
}
然后调试日志填充PHP Notice: Undefined variable: navigation_type in /path/to/components/navigation.php on line 31

1 个回复
SO网友:Yalamber

使用get\\u template\\u part时,您的文件导航。php无法访问变量$navigation\\u type。但当您确实包含并定位了\\u模板时,它就像包含了一个php文件,以便它可以访问该变量。这是由于在您的上下文中变量的范围。

结束

相关推荐