如何创建自定义api端点?

时间:2016-09-18 22:50:34

标签: wordpress

我是WordPress插件开发的新手。我目前正在尝试开发一个附加计算器插件,其中包含API端点example.com/calc/add。如何将新的URL端点添加到我的WordPress安装中,以便插件可以接收“POST”请求(逗号分隔列表中的数字)并在添加数字后相应地返回数据?非常感谢你!

2 个答案:

答案 0 :(得分:6)

您可以使用parse_request挂钩创建终点,下面是我的插件中的示例

// this example creates endpoint like http://emerico.in/api/v2

add_action('parse_request', 'endpoint', 0);
add_action('init', 'add_endpoint');

/**
 * @param null
 * @return null
 * @description Create a independent endpoint
 */
function endpoint()
{
    global $wp;

    $endpoint_vars = $wp->query_vars;

    // if endpoint
    if ($wp->request == 'api/v2') {

        // Your own function to process end pint
        $this->processEndPoint($_REQUEST);

        // After all redirect to home page
        wp_redirect(home_url());
        exit;
    } elseif (isset($endpoint_vars['tracking']) && !empty($endpoint_vars['tracking'])) {
        $request = [
            'tracking_id' => $endpoint_vars['tracking']
        ];

        $this->processEndPoint($request);
    } elseif (isset($_GET['utm_source']) && !empty($_GET['utm_source'])){
        $this->processGoogleTracking($_GET);
    }
}

/**
 * @param null
 * @return null
 * @description Create a permalink endpoint for projects tracking
 */
function add_endpoint()
{

    add_rewrite_endpoint('tracking', EP_PERMALINK | EP_PAGES, true);

}

答案 1 :(得分:0)

最小代码

这会像custom-endpoint那样创建http://example.com/custom-endpoint

add_action('parse_request', 'register_endpoint', 0);

function register_endpoint() {
    global $wp;

    if ($wp->request == 'custom-endpoint') {
        echo 'hello world'; // process anything here
        exit;
    }
}