add_action( 'rest_api_init', function () {
register_rest_route( 'codetot/v1', '/update_post/(?P<post_id>\d+)', array(
'methods' => 'POST',
'callback' => 'ct_update_post_callback',
'permission_callback' => 'ct_permission_update_callback',
'args' => [
'post_id' => [
'required' => true,
'validate_callback' => function ($param) {
return is_numeric(absint($param));
},
'sanitize_callback' => 'absint'
]
]
));
});
function ct_permission_update_callback( $request ) {
$headers = $request->get_headers();
$authorization = $headers['authorization'][0];
if ( empty($authorization) ) {
if (is_user_logged_in()) {
return true;
}
return new WP_Error('400', _x('Bad request. You are not logged in.', 'rest api', 'codetot') );
} else {
$token_arr = explode(' ', $authorization);
$token_data = ct_get_access_token($token_arr[1]);
if ( $token_data['expires'] <= strtotime(current_time('mysql')) ) {
return new WP_Error('401', _x('Bad request. Access token expires.','rest api', 'codetot'), $token_data );
}
return true;
}
}
function ct_update_post_callback( $request ) {
$post_id = $request['post_id'];
$params = $request->get_body_params();
$files = $request->get_file_params();
if ( empty($params) ) {
return new WP_REST_Response([
'code' => 'bad_request',
'message' => _x('Bad request. Missing data.', 'rest api', 'codetot'),
], 400);
}
// Handle data here
return new WP_REST_Response([
'code' => 'success',
'message' => esc_html__('Update post success.', 'codetot'),
], 200);
}