我正在创建一个主题框架,以便在我开发的未来wordpress主题中使用。我想在子主题起作用之前,在父主题中包含从属文件,例如类。php已加载。这样子主题就不需要包含类。
我将尝试演示一个示例:
父主题-文件。php:
require_once get_template_directory().\'/classes/Core.php\';
require_once get_template_directory().\'/classes/Core_View.php\';
$CoreView = new Core_View();
$CoreView->init();
子主题-函数。php:
require_once get_template_directory().\'/classes/ContentSidebarView.php\';
$ContentSidebarView = new ContentSidebarView();
$ContentSidebarView->init();
ContentSidebarView类文件:
Class ContentSidebarView extends Core_View{
public function init(){
// Do Something
}
}
当前,我得到一个错误,即在使用子主题时找不到类Core\\u视图。如果我只使用父主题,情况就不是这样了。
我想要的是:我只需要子主题中的模板,然后启动它。这意味着必须已经加载Core\\u视图。
我也愿意接受关于如何启动模板的建议。也许在子主题索引文件中会更好?
SO网友:Chip Bennett
这个functions.php
文件在执行plugins_loaded
, 带子主题functions.php
在父主题之前执行functions.php
. 这意味着,为了在父主题之后加载子主题中的功能子文件functions.php
执行时,只需挂接include()
在plugins_loaded
.
出于这种目的通常安全的行动是after_setup_theme
:
function wpse130681_load_dependent_functional_files() {
require_once get_template_directory().\'/classes/ContentSidebarView.php\';
$ContentSidebarView = new ContentSidebarView();
$ContentSidebarView->init();
}
add_action( \'after_setup_theme\', \'wpse130681_load_dependent_functional_files\' );
也就是说:如果你遇到像这样的问题,首先你可能做错了什么。仅从代码示例中猜测:
将类实例化挂钩到适当的挂钩中,例如init
使框架类通过过滤器扩展,并通过这些过滤器在子主题中扩展