Intereting Posts
Как фильтровать получение предыдущей функции post по метазначению DESC и по дате DESC? Проблема с загрузкой изображений из дочерней темы CSS-файл с соответствующим путем Фронт-конец wp_editor не передает аудио / видео ссылки Как перечислить все изображения в каталоге загрузок, кроме тех, которые прикреплены к любому сообщению Отображение содержимого с одного сайта WP на отдельном сайте WP add_filter несколько раз с различными функциями аддона? Обновление содержимого сообщения на лицевой стороне Может ли виджет «Последние сообщения» фильтроваться функцией functions.php? Подключение формы комментариев к формам Gravity Как получить доступ к параметрам, исходящим из действия? Выберите первый элемент дочерней / подстраницы на страницах списка страниц. Дайте администратору сайта возможность «пропустить подтверждение по электронной почте» при добавлении нового пользователя Изменение заголовка сообщения с кодом Избранные изображения в RSS-ленте Есть ли возможность изменить содержимое сообщения непосредственно в браузере вместо того, чтобы оно отображалось в браузере, изменяя его в базе данных?

Увеличьте размер страницы API-интерфейса WordPress REST

Клиент использует WordPress REST JSON API с некоторыми моделями данных WordPress. Нам нужно попасть в WordPress API из внешнего интерфейса и получить несколько сотен пользовательских сообщений.

У WordPress есть жесткий предел из 100 пользовательских сообщений .

Я хотел бы изменить этот предел на гораздо большее число для этого варианта использования. Я читал, что вы не можете паттать обезьяны в PHP.

Есть ли способ настроить per_page->maximum значение per_page->maximum , например, 10000?

Вы не можете преодолеть этот предел 100 сообщений на запросы в WordPress для запросов по умолчанию. Один из способов получить все сообщения – это запросить этот интерфейс, пока у вас не будет всех сообщений. Другой вариант – это конечная точка.

Если вы можете, я предлагаю создать вашу собственную конечную точку REST. Это уже будет работать и возвращать все сообщения

 add_action('rest_api_init', 'my_more_posts'); function my_more_posts() { register_rest_route('myplugin/v1', '/myposts', array( 'methods' => 'GET', 'callback' => 'my_more_posts_callback', )); } function my_more_posts_callback( WP_REST_Request $request ) { $args = array( 'posts_per_page' => -1, ); return get_posts($args); } 

Более подробную информацию о создании вашей конечной точки можно найти здесь , в то время как аргументы get_posts() объясняются здесь .


Для чистого решения JavaScript в интерфейсе вы можете использовать заголовок x-wp-totalpages который сообщает об общем количестве страниц. Если эта страница не достигнута, мы знаем, что нам нужно снова запросить запрос. Итак, базовая рекурсивная версия, подобная этой, работает:

 var allPosts = []; function retrievePosts(opt) { if (typeof opt === 'undefined') opt = {}; var options = $.extend({ per_page: 100, page: 1 }, opt); var url = 'https://example.com/wp-json/wp/v2/posts'; var uri = url + '?per_page=' + options.per_page + '&page=' + options.page; $.getJSON(uri, function(data, status, jqXHR) { var totalpages = jqXHR.getResponseHeader('x-wp-totalpages'); allPosts = allPosts.concat( data ); // here the magic happens // if we are not done if (options.page < totalpages) { // request again, but for the next page retrievePosts({ per_page: options.per_page, page: options.page + 1 }); } else { // WE ARE DONE // posts are in allPosts } }); }; retrievePosts();