Удаление _links из WP REST API: подробное руководство

WP WordPress REST API (_links) — это мощная функция, которая позволяет разработчикам взаимодействовать с данными WordPress с помощью HTTP-запросов. Однако в некоторых случаях вам может потребоваться удалить свойство _links из ответа API, чтобы повысить производительность или скрыть ненужные данные. В этой статье мы рассмотрим различные методы удаления _links из WP REST API, а также приведем примеры кода.

Метод 1: изменение ответа с помощью фильтра rest_prepare_post

function remove_links_from_rest_response($data, $post, $context) {
    if ($context === 'view' && is_array($data) && isset($data['_links'])) {
        unset($data['_links']);
    }
    return $data;
}
add_filter('rest_prepare_post', 'remove_links_from_rest_response', 10, 3);

Метод 2: пользовательская конечная точка без _links

function custom_endpoint_without_links(WP_REST_Request $request) {
    $post = get_post($request['id']);
    return array(
        'id'   => $post->ID,
        'title' => $post->post_title,
        'content' => $post->post_content,
        // Add other desired properties
    );
}
function register_custom_endpoint_without_links() {
    register_rest_route('custom/v1', '/post/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'custom_endpoint_without_links',
    ));
}
add_action('rest_api_init', 'register_custom_endpoint_without_links');

Метод 3. Использование фильтра restprepare{$post_type}

function remove_links_from_rest_response_by_post_type($data, $post, $context) {
    if ($context === 'view' && is_array($data) && isset($data['_links'])) {
        unset($data['_links']);
    }
    return $data;
}
add_filter('rest_prepare_post_type', 'remove_links_from_rest_response_by_post_type', 10, 3);

Метод 4. Изменение ответа JSON с помощью rest_request_after_callbacks

function remove_links_from_rest_response_json($response, $handler, $request) {
    if ($request->get_route() === '/wp/v2/posts' && isset($response->data['_links'])) {
        unset($response->data['_links']);
    }
    return $response;
}
add_filter('rest_request_after_callbacks', 'remove_links_from_rest_response_json', 10, 3);

В этой статье мы рассмотрели различные методы удаления _links из ответа WP REST API. В зависимости от ваших требований и необходимого уровня настройки вы можете выбрать наиболее подходящий метод. Удалив _links, вы можете повысить производительность, уменьшить количество ненужных данных и создать более чистые ответы API. Поэкспериментируйте с этими методами и выберите тот, который лучше всего подходит для вашего проекта.