使用可被Web服务使用的参数设置url

时间:2019-01-17 03:48:17

标签: php wordpress restful-url

我正在WordPress REST API中设置一个自定义终结点,它将调用SQL语句。我无法弄清楚应该如何使用需要传递的参数来设置url,然后如何将其从url中取出以便可以在SQL查询中使用。

我尝试将我的网址设置如下: https://www.mywebsitename.com/wp-json/prayerRequest/v1/1

我得到的答复是: {“代码”:“ rest_no_route”,“消息”:“未找到与URL和请求方法匹配的路由”,“数据”:{“状态”:404}}

末尾的1是我需要传递的ID。

这是我的代码:

add_action('rest_api_init', 'prayer_request_routes');

function prayer_request_routes() {  
    register_rest_route('prayerRequest/v1', '/{id}', array(
        'methods' => 'GET',
        'callback' => 'getPrayerRequestById'
    ));
}

function getPrayerRequestById() {
    global $wpdb;
    $id = $_GET['id'];
    $query = "SELECT * FROM wp_prayer_requests WHERE id = $id";
    $result = $wpdb->get_results($query);
    return $result;
}

我希望$ id变量是网址末尾的id。

示例: 网址https://www.mywebsitename.com/wp-json/prayerRequest/v1/1将导致SQL查询SELECT * FROM wp_prayer_requests WHERE id = 1

1 个答案:

答案 0 :(得分:0)

我想出了解决问题的语法。

路线:

register_rest_route( 'prayerRequest/v1', '/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'getPrayerRequestById'
));

功能:

function getPrayerRequestById(WP_REST_Request $request) {
    global $wpdb;
    $id = $param = urldecode($request->get_param( 'id' ));
    $query = "SELECT * FROM wp_prayer_requests WHERE id = $id";
    $result = $wpdb->get_results($query);
    return $result;
}