从两个答案中汲取灵感的替代解决方案@Milo 和@toscho.
创建自己的函数以加载模板,例如。
if ( ! function_exists(\'my_locate_template\') ) {
function my_locate_template( $template = \'\', $load = false, $once = true ) {
$filtered = apply_filters(\'allow_child_load_\' . $template, true);
if ( ! is_child_theme() || $filtered ) return locate_template($template, $load, $once);
return false;
}
}
然后在父主题中使用加载文件
my_locate_template(\'same_file_name.php\')
.
这样,您的文件将始终加载到父主题中,当使用子主题时,您可以使用过滤器排除某些文件。
add_filter(\'allow_child_load_disallow-this.php\', \'__return_false\');
然后是文件
disallow-this.php
, 将不会加载到该子主题中。
另请注意,函数包装在if (! function_exists(\'my_locate_template\') ) {
因此,如果需要,可以在子主题中完全替换它。
简单、灵活且具有舒适的默认设置。