我的问题是我必须加载我的父主题functions.php
我的子主题之前的文件functions.php
文件加载。设置和;初始化过程。我查看了/wp\\u core\\u root/wp设置中的挂钩。php(名称:do_action(\'setup_theme\');
).
问题是我不知道如何连接到那里,因为我得到的第一个文件是子主题的functions.php
, 所以没有add_action( \'setup_theme\', \'my_init_function\' );
将起作用。
编辑:
a)我知道插件加载时间早于主题,因此甚至可以访问初始查询,但我不想依赖插件
b)以下是wp设置中的代码(简称)。php文件
// happens a lot earlier:
do_action( \'plugins_loaded\' );
// localize stuff happening here
do_action( \'setup_theme\' );
// Load the functions for the active theme, for both parent and child theme if applicable.
if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . \'/functions.php\' ) )
include( STYLESHEETPATH . \'/functions.php\' );
if ( file_exists( TEMPLATEPATH . \'/functions.php\' ) )
include( TEMPLATEPATH . \'/functions.php\' );
// first available hook, *after* functions.php was loaded
do_action( \'after_setup_theme\' );
我想避免两件事:第一,向用户解释很多。其次,如果不小心删除了父初始化过程而割断了绳子,则有人可能会打破任何东西。人们应该只在功能内部玩。php,而不必冒着在不知情的情况下破坏任何东西的风险。
换句话说:我如何保持我的子主题功能。php文件是干净的,但是父主题引导程序已经完成了吗?
有什么想法吗?非常感谢!
最合适的回答,由SO网友:Michal Mau 整理而成
贾斯汀·塔洛克最近写了一篇关于making a better functions.php file<如果我没记错的话,他是在哪里处理这个问题的。
不幸的是,他的网站现在已经关闭了,所以我现在只能依靠我的记忆了。
您在正确的轨道上after_setup_theme
钩
据我所知,诀窍是将过滤器和操作包装到它的函数中
参见下面的示例你在both 父级和子级functions.php
文件然后你可以玩这两个钩子的优先级千言万语的一点点代码-您的父主题function.php
应该是这样的:
add_action( \'after_setup_theme\', \'your_parent_theme_setup\', 9 );
function your_parent_theme_setup() {
add_action(admin_init, your_admin_init);
add_filter(the_content, your_content_filter);
}
function your_admin_init () {
...
}
function your_content_filter() {
...
}
SO网友:scribu
因此,您试图从子函数执行代码。php,但在加载父主题之后。简单,只需使用自定义操作:
在…的结尾parent/functions.php
:
do_action(\'parent_loaded\');
在中
child/functions.php
:
function parent_loaded() {
// do init stuff
}
add_action(\'parent_loaded\', \'parent_loaded\');
所有值得称道的家长主题都是这样做的。此外,他们还有其他几个动作和过滤器,供子主题使用。