WordPress REST API V2: как получить список всех записей?
Мне нужно получить список всех записей в определенной категории. Количество записей превышает 100. Мне не нужен контент записей, только id и slug.
https://example.com/wp-json/wp/v2/posts/
возвращает только 10 записей с контентом.
Возможно ли получить все записи без контента?

По умолчанию, с использованием доступных хуков и API ядра, вы не можете получить более 100 элементов в ответе REST API WordPress из соображений производительности. Что касается второй части вопроса, вы можете удалить некоторые поля из ответа, используя параметр _fields
в вашем запросе, как показано в примерах из руководства:
// вариант a: используя имена полей через запятую.
https://example.com/wp-json/wp/v2/posts/?_fields=author,id,excerpt,title,link
// вариант b: используя синтаксис массива.
https://example.com/wp-json//wp/v2/posts?_fields[]=author&_fields[]=id&_fields[]=excerpt&_fields[]=title&_fields[]=link
Теоретически, если вы владеете сайтом, вы можете удалить поля из ответа API, используя динамический фильтр rest_prepare_{$this->post_type}
для типа(ов) записей, которые вы хотите изменить.
if(!function_exists('wpse_382314_post_filter_data')) :
function wpse_382314_post_filter_data($response, $post) {
$response->data['post_title'] = '';
$response->data['post_content'] = '';
}
}
add_filter('rest_prepare_post', 'wpse_382314_post_filter_data', 10, 3);

Прежде всего, чтобы получить более 10 записей, вам нужно просто указать параметр per_page
.
https://example.com/wp-json/wp/v2/posts/?per_page=100
Но да, иногда записей может быть тысячи, и в этом случае, конечно, не лучшая идея — получать всё одним запросом к REST API. Мы можем объединить два запроса, используя параметры per_page
и page
:
https://example.com/wp-json/wp/v2/posts/?per_page=100&page=1
https://example.com/wp-json/wp/v2/posts/?per_page=100&page=2
Или вы также можете найти пример с использованием PHP и WordPress HTTP API здесь: https://rudrastyh.com/wordpress/rest-api-get-posts.html#parameters
