我正在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
答案 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;
}