正如@TomJ Nowell所说,不要嵌套函数。只要照常写:
function my_theme_prefix_setup() {
// Add theme support etc.
}
add_action( \'after_setup_theme\', \'my_theme_prefix_setup\' );
function my_theme_prefix_init() {
// Register a post type
}
add_action( \'init\', \'my_theme_prefix_init\' );
或使用类:
class my_theme {
function __construct() {
add_action( \'after_setup_theme\', array( $this, \'setup\' ) );
add_action( \'init\', array( $this, \'init\' ) );
}
function setup() {
}
function init() {
}
}
$my_theme = new my_theme;
或者使用“静态”类(无实例化)——由于主题/插件中的类模式通常是一个美化的名称空间,因此可以这样使用它们:
class my_theme {
static function run() {
add_action( \'after_setup_theme\', array( __class__, \'setup\' ) );
add_action( \'init\', array( __class__, \'init\' ) );
}
static function setup() {
}
static function init() {
}
}
my_theme::run();
Then there\'s namespaces. 只要您运行的PHP>=5.3(正如@Nicholas所提到的,您应该这样做,但您不能依赖于公共主题-WordPress的最低要求只有5.2.4),这就是上述类试图解决的真正的解决方案。
也就是说,没有一种正确的技术。挑一个适合你的工作,并且你觉得舒服的。只要你保持它清晰、一致和可维护,你就做对了。