我不熟悉Woocommerce,但简而言之,get_template_part()
只在父主题和子主题中查找模板部分,而不在插件中查找。
如果你看看源代码,get_template_part()
使用locate_template
其中包含以下源代码(这是搜索实际模板部分的地方)
function locate_template($template_names, $load = false, $require_once = true ) {
$located = \'\';
foreach ( (array) $template_names as $template_name ) {
if ( !$template_name )
continue;
if ( file_exists(STYLESHEETPATH . \'/\' . $template_name)) {
$located = STYLESHEETPATH . \'/\' . $template_name;
break;
} elseif ( file_exists(TEMPLATEPATH . \'/\' . $template_name) ) {
$located = TEMPLATEPATH . \'/\' . $template_name;
break;
}
}
if ( $load && \'\' != $located )
load_template( $located, $require_once );
return $located;
}
正如你所见,
locate_template
仅在父主题和子主题中查找模板
这就是为什么你不能使用get_template_part()
或者使用它将模板部分从插件调用到主题中。
根据@MarkKaplun的评论进行编辑get_template_part()
在检索模板部件方面,Mark还指出了关于Woocommerce使用的一个有效观点
我想换一种说法,因为WC是一个插件,它不能对使用它的主题以及它们有哪些部分有任何假设,而不限制它的采用,WC是用来处理任何主题的。