在WordPress中,这样做了:
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
...
}
WordPress如何在给定字符串theme_setup()
的情况下访问函数theme_setup
?
答案 0 :(得分:2)
首先,使用所有参数调用函数add_action。下面列出了此功能的代码。这个函数没有意思,它只是add_filter函数的包装器,更有趣。
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
return add_filter($tag, $function_to_add, $priority, $accepted_args);
}
函数add_filter将提供给函数的数据保存到全局变量中。代码如下:
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
global $wp_filter, $merged_filters;
$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
$wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args);
unset( $merged_filters[ $tag ] );
return true;
}
现在你已经在全局变量中保存了所有你需要的东西,你可以从function do_action, which is pretty long.开始调用函数名称但是最有趣的部分是它的结尾:
call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
函数call_user_func_array是神奇的。您可以在PHP manual
中详细了解相关信息答案 1 :(得分:0)
你可以开始查看源代码......
你可以从这里开始...... https://developer.wordpress.org/reference/functions/add_action/