0

WordPress では、これが行われます。

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

theme_setup()WordPressは文字列を指定して関数にどのようにアクセスしますtheme_setupか?

4

2 に答える 2

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;
}

これで、必要なものがすべてグローバル変数に保存され、かなり長い関数 do_action から関数名を呼び出すことができます。しかし、最も興味深い部分は最後にあります。

call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));

関数 call_user_func_array は魔法です。詳細については、PHP マニュアルを参照してください。

于 2013-01-27T10:02:00.230 に答える
0

ソースコードを見始めることができます...

ここから始めることができます... https://developer.wordpress.org/reference/functions/add_action/

于 2013-01-27T09:54:41.027 に答える