#function #pagination
#функция #разбивка на страницы
Вопрос:
Я использую функцию get_users для отображения пользовательского списка пользователей на сайте. Единственная проблема, с которой у меня возникла проблема, — это как разбить результат на страницы.
Это пример функции, которую я использую:
<ul>
<?php
$args = array(
'meta_key' => 'jabber',
'meta_value' => 'User Name',
'meta_compare' => 'LIKE',
'order' => 'ASC',
'count_total' => true,
'fields' => 'all',
);
$blogusers = get_users($args_1);
foreach ($blogusers as $user) {
$user_id = $user->ID;
$user = get_userdata($user_id);
echo '<li class="provider-list prov-list-gradient">' . $user->display_name . '</li>';
}
?>
</ul>
Кажется, нет очевидного способа создания разбивки на страницы для этой функции. Я был бы признателен за помощь в этом.
Обновить:
Это исходный код функции get_users:
function get_users( $args = array() ) {
$args = wp_parse_args( $args );
$args['count_total'] = false;
$user_search = new WP_User_Query($args);
return (array) $user_search->get_results();
}
Ответ №1:
При условии, что вы запускаете get_users()
перед загрузкой каждой страницы N
результатов, вы можете пересмотреть свой get_users()
запрос, чтобы использовать OFFSET
ключевое слово в mysql.
Пример псевдозапроса (где P
ваш номер страницы):
SELECT * FROM USERS LIMIT N OFFSET N*P
Комментарии:
1. Спасибо, веселые землетрясения. Я добавил параметр offset в свой запрос. Значение равно 8. Насколько я понимаю, смещение пропускает количество пользователей в результатах. Я собираюсь загрузить функцию get_users в файл php и получить список результатов foreach с использованием страницы шаблона. Я собираюсь установить N равным 8, чтобы на странице было 8 результатов. Как я могу использовать ваш пример mysql для реализации вашего решения?
2. Многое зависит от вас, но я подумал, может быть, в вашем массиве $ args будет другая пара ключ / значение, соответствующая текущей странице, на которой вы находитесь (например, ‘currentPage’=> ‘1’). Затем, когда ваш запрос генерируется в get_users, вы можете добавить выражение смещения. $query=’… ОГРАНИЧЕНИЕ ‘.N.’ СМЕЩЕНИЕ ‘.N*currentPage
3. Хорошо, есть параметр «number», который «ограничивает общее количество возвращенных пользователей». Может быть, это то, что я мог бы использовать с вашим решением… Но если это правильно, мне нужно будет установить неограниченное число , так как у меня может быть большое количество результатов. Включив параметр number и offset , я, вероятно, мог бы использовать приведенный вами пример, чтобы заставить работать разбивку на страницы… Что вы думаете?
4. Похоже, вы на правильном пути. Наверное, я немного запутался в функции get_users(). Я мог бы дать лучший совет, если бы мог увидеть исходный код этой функции.
5. Привет, Mirthquakes, я обновил сообщение исходным кодом get_users.