Autoloading in Child Theme

时间:2016-09-03 作者:Henshall

我正在尝试自动加载供应商/自动加载。php从父主题转换为子主题。

以下是我尝试过但没有成功的方法:

function beast_theme_setup() {
  $var1 = get_theme_root_uri() . \'/beast/vendor/autoload.php\';
  $var2 = get_theme_root_uri() . \'/beast/functions.php\';
  $var = locate_template( array( $var1, $var2), true, false );
  var_dump($var);
}

add_action( \'after_setup_theme\', \'beast_theme_setup\', 11 );
以及

include get_theme_root_uri() . \'/beast/vendor/autoload.php\';
这方面的任何帮助都将是惊人的。

谢谢你,杰克。

1 个回复
SO网友:Tom J Nowell

因此,有一件或两件事需要记住:

应该只有一个供应商文件夹,应该有一个主编写器。位于项目根目录中的json,可以提取所有依赖项。您总是在当前目录中检查并加载自动加载器,不能保证它在那里或不在那里,因为您自己可能是依赖项,也可能不是依赖项,但重要的是,您需要了解有关WP主题的更多信息,以简化您的任务:

首先,get_theme_root 没有必要,您可以使用get_template_directory() 相反,它将为您提供父主题目录,因此无需硬编码父主题名称。

这将使您的代码简化为:

if ( file_exists( get_template_directory() . \'/vendor/autoload.php\' ) ) {
    require get_template_directory() . \'/vendor/autoload.php\';
}
但即使这样也没有必要,这就引出了第二条信息:

在WordPress中,子主题functions.php 加载,然后加载父主题functions.php 之后立即。

因此,您所需要做的就是确保父主题加载自动加载器,并且所有代码都按其应该的方式运行(自动加载器本身除外)。这样,您根本不需要加载父主题自动加载程序,它会自己加载