我正在修改主题中的模块, 并将其添加到子主题中。该模块不是页面模板, 而是一个PHP文件。我将文件放在与父主题相同的子主题中, 但是WordPress没有选择子主题文件。如何使其运作?
#1子主题旨在覆盖模板。模板通常包含在get_template_part()中, 该模板基本上使用以下功能:
/**
* Retrieve the name of the highest priority template file that exists.
*
* Searches in the STYLESHEETPATH before TEMPLATEPATH and wp-includes/theme-compat
* so that themes which inherit from a parent theme can just overload one file.
*
* @since 2.7.0
*
* @param string|array $template_names Template file(s) to search for, in order.
* @param bool$loadIf true the template file will be loaded if it is found.
* @param bool$require_onceWhether to require_once or require. Default true. Has no effect if $load is false.
* @return string The template filename if one is located.
*/
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;
} elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
$located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
break;
}
}if ( $load &
&
'' != $located )
load_template( $located, $require_once );
return $located;
}
如你所见, STYLESHEETPATH(子主题路径)在模板路径之前被检查。但是你必须像模板一样包含文件。
无法使用子主题覆盖任意PHP文件。你也不覆盖父级的functions.php, 而是对其进行扩展。
【覆盖子主题中的模块】你可以做什么来解决你的问题:
- 在子主题functions.php中包含带有require()或include()的新功能PHP文件。
- 使用add_filter或add_action钩住你的父主题函数
- 如果所有这些都无济于事, 请打扰父主题开发人员以增加其可扩展性
推荐阅读
- 通过插件覆盖WordPress主题页面
- .onscroll函数在单个帖子页面上不起作用
- 一键更改WordPress主题定制器中的所有设置()
- 在不同的国家打开不同的页面()
- 导航以外没有其他可点击的内容(a hrefs或click函数)
- WordPress中如何查看文章数量
- 没有样式表在WordPress期望菜单中
- 新页面将我发送到存档页面
- wc统计命令 -l只显示行数 -w只显示单词数 -c只显示字节数