访问函数将名称作为字符串

时间:2013-01-27 09:46:25

标签: wordpress function

在WordPress中,这样做了:

add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
  ...
}

WordPress如何在给定字符串theme_setup()的情况下访问函数theme_setup

2 个答案:

答案 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/