Получение количества записей и категорий через WP REST API v2
Я хочу получить количество записей в моем блоге. Я думаю использовать
wp-json/wp/v2/categories?page=1 >> count это хороший способ. Но использование этого решения не очень эффективно с точки зрения скорости, и я не знаю, как получить все категории одним вызовом (если вы знаете, было бы очень полезно, если бы вы поделились). Есть ли какой-нибудь способ/руководство/... позволяющее добавить количество записей в основной вызов? например, по этому маршруту: wp-json/wp/v2/posts....
WP Rest API отправляет общее количество (found_posts) из WP_Query в заголовке с названием X-WP-Total
.
ДЛЯ ЗАПИСЕЙ: вы можете сделать запрос к конечной точке записей REST API
http://demo.wp-api.org/wp-json/wp/v2/posts
Значение количества записей возвращается в заголовке как X-WP-Total
. Ниже приведен пример ответа с демонстрационного сайта
Access-Control-Allow-Headers:Authorization, Content-Type
Access-Control-Expose-Headers:X-WP-Total, X-WP-TotalPages
Allow:GET
Cache-Control:max-age=300, must-revalidate
Connection:keep-alive
Content-Encoding:gzip
Content-Type:application/json; charset=UTF-8
Date:Wed, 28 Dec 2016 12:48:50 GMT
Last-Modified:Wed, 28 Dec 2016 12:48:50 GMT
Link:<https://demo.wp-api.org/wp-json/wp/v2/posts?page=2>; rel="next"
Server:nginx/1.4.6 (Ubuntu)
Transfer-Encoding:chunked
Vary:Cookie
Via:1.1 dfa2cbb51ec90b28f03125592b887c7d.cloudfront.net (CloudFront)
X-Amz-Cf-Id:ri4C3e-AdixwqGv_wYNdGRq9ChsIroy1Waxe2GqkiTqbk4CpiSIQfw==
X-Batcache:MISS
X-Cache:Miss from cloudfront
X-Content-Type-Options:nosniff
X-EC2-Instance-Id:i-198c7e94
X-Powered-By:PHP/7.0.11-1+deb.sury.org~trusty+1
X-Robots-Tag:noindex
X-WP-Total:71
X-WP-TotalPages:8
ПРИМЕЧАНИЕ:
Вы также можете ограничить количество записей на странице до 1, чтобы не загружать все записи WordPress только для получения их количества
http://demo.wp-api.org/wp-json/wp/v2/posts?per_page=1
Получение всех категорий
Все, что вам нужно сделать, это отправить GET-запрос к конечной точке категорий:
http://demo.wp-api.org/wp-json/wp/v2/categories
Это вернет все категории, а общее количество категорий можно найти в заголовке X-WP-Total
.

Если не понятно, как получить доступ к заголовку (с количеством записей) из Ajax-запроса, ниже приведен пример с использованием jQuery .get. Ключевой момент в том, что функция обратного вызова имеет необязательный параметр, содержащий запрос, который включает заголовки.
$.get( 'http://demo.wp-api.org/wp-json/wp/v2/posts', function( data, status, request ) {
numPosts = request.getResponseHeader('x-wp-total');
console.log( numPosts ); //выводит количество записей в консоль
});

Попробую ответить на часть вашего вопроса. Количество постов, возвращаемых REST API WordPress версии 2, можно получить из заголовков. Вы можете получить значение примерно так:
headers('X-WP-Total')
Количество постов на странице:
wp-json/wp/v2/categories?page=1&per_page=5

Я потратил часы на поиск информации о получении количества записей через WP REST API, даже версии 2, с помощью Google, документации WordPress или официальной документации библиотеки, но, к сожалению, не нашел ничего полезного.
Поэтому я попробовал получать записи, увеличивая номер страницы, пока длина возвращаемого массива JSON не станет равной 0, что означает, что больше нет страниц с записями в данной категории, и остановил увеличение номера страницы.
Но если вам нужно получить произвольное количество записей на странице с помощью WP REST API, вы можете легко использовать параметр filter[posts_per_page]={$numberOfPosts}
при отправке запроса.
Надеюсь, это поможет.
