在另一个函数中未调用add_action

时间:2019-01-27 06:37:11

标签: php wordpress

我正在尝试以这种方式从另一个函数调用add_action:

使用此:

$this->add_action('most-rated', 'get_most_rated');

代替此:

add_action('rest_api_init', function () {
   register_rest_route('app-api', 'most-rated', [
        'methods' => 'GET', 
        'callback' => [$this, 'get_most_rated'],
    ]);
}, 10);  

其中add_action为:

public function add_action($route, $endpoint, $request = 'GET') {
    add_action('rest_api_init', function () {
        register_rest_route('app-api', $route, [
            'methods' => $request, 
            'callback' => [$this, $endpoint],
        ]);
    }, 10);
}

该代码正在运行,并且由于仍在调用该代码而没有发送任何错误,但未添加EndPoint。

我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

$route$endpoint$request不在匿名函数的范围内,您可以添加一个use语句以在函数内部访问它们。

public function add_action($route, $endpoint, $request = 'GET') {
    add_action('rest_api_init', function () use ($route, $endpoint, $request) {
        register_rest_route('app-api', $route, [
            'methods' => $request, 
            'callback' => [$this, $endpoint],
        ]);
    }, 10);
}