Как ограничить результаты per_page и отображать ссылки на страницы для настраиваемой конечной точки API REST API? - PullRequest
0 голосов
/ 16 мая 2019

Я настроил пользовательский маршрут WP REST API, и мне нужна помощь, чтобы ограничить результаты до 5 на страницу, а затем иметь ссылки на страницы для отображения следующей страницы и т. Д.

Я попытался добавить 'per_page => 5' вмассив аргументов, но ничего не меняется в результатах URL.Я также не могу понять, как включить нумерацию страниц вообще.Извините, это мой первый опыт с этим.

function staffSearchEndpoint(){
    register_rest_route('staffbio/v1', 'staffsearch', array(
        'methods' => WP_REST_SERVER::READABLE,
        'callback' => 'staffSearchJSONResults',
    ));
}

function staffSearchJSONResults($data) {
    $staffBio = new WP_Query(array(
        'post_type' => 'staff_bios',
        's' => $data['term'],
        'orderby' => 'title',
        'order' => 'asc'
    ));

Если вы можете, пожалуйста, дайте мне знать, что добавить в $staffBio array или что-нибудь еще, что будет высоко оценено.Кроме того, если для ответа необходим Javascript, пожалуйста, используйте только простой JS, пожалуйста, без JQuery.

1 Ответ

0 голосов
/ 16 мая 2019

Похоже, вы используете неправильный аргумент запроса WP для публикации на странице.Вам нужно использовать 'posts_per_page' => 5, вместо 'per_page => 5' в аргументе WP_Query.

Так что ваша функция staffSearchJSONResults будет:

function staffSearchJSONResults($data) {
$staffBio = new WP_Query(array(
    'post_type' => 'staff_bios',
    'posts_per_page' => 5,
    's' => $data['term'],
    'orderby' => 'title',
    'order' => 'asc'
));

Для нумерации страниц я бы предложил использоватьаргумент offset.

Допустим, у вас есть общее количество постов в staff_bios, значение posts_per_page и, скажем, значение по умолчанию offset будет 0

Итак, основные логическиепредставление для разбивки на страницы будет:

$pagination_number = 1; //Default pagination number, change as per pagination number
$total_posts = 30;
$posts_per_page = 5;
//This will change based on pagination number, it indicate how many post to skip
$offset = ($pagination_number - 1) * $posts_per_page;  

$data = WP_Query(array(
'post_type' => 'staff_bios',
'posts_per_page' => $posts_per_page,
's' => $data['term'],
'orderby' => 'title',
'order' => 'asc',
'offset' => $offset,
));

$total_pagination = $total_posts/$posts_per_page; //(1, 2, 3 ,4 , 5, ....)

//LOOP THGOUGH DATA

Здесь вы можете проверить все аргументы WP_Query: https://www.billerickson.net/code/wp_query-arguments/

...