我遇到的问题是,我必须先加载父主题的functions.php
文件,然后再functions.php
加载子主题的文件。这是设置和初始化过程所必需的。我查看了/wp_core_root/wp-settings.php(名为:)中的钩子do_action('setup_theme');
。
问题是我不知道该如何挂钩,因为我得到的第一个文件是子主题的functions.php
,所以没有用add_action( 'setup_theme', 'my_init_function' );
。
编辑:
a)我知道插件的加载早于主题加载,因此甚至可以访问初始查询,但是我不想依赖插件。
b)这是wp-settings.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' );
我想避免两件事:首先,向用户进行很多解释。其次,如果不小心删除了父母的初始化程序而割断了绳子,则有人可能会摔断任何东西。人们应该只在functions.php中玩,而不必冒险破坏任何东西而又不知道它。
换句话说:我如何保持子主题functions.php文件干净,但父主题引导程序完成了?
有任何想法吗?非常感谢!
functions.php
。看一下核心中的“ molto loko” wp-settings.php
文件(行:275-279 @wp 3.1 rc)...看起来像这样:if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) ) include( STYLESHEETPATH . '/functions.php' ); if ( file_exists( TEMPLATEPATH . '/functions.php' ) ) include( TEMPLATEPATH . '/functions.php' );
,所以我看不到机会...而且我不想使用一个引导我的主题的插件。
include(/path/to/parent/themes/functions.php)
在子主题functions.php的顶部插入,则之前的所有内容都会被加载。不?