Как разбить на страницы функцию get_users?

Я использую функцию 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();
    }

person gdinari    schedule 26.10.2011    source источник


Ответы (1)


Если вы запускаете get_users() перед загрузкой каждой страницы результатов N, вы можете пересмотреть свой get_users() запрос, чтобы использовать ключевое слово OFFSET в mysql.

Пример псевдозапроса (где P — номер вашей страницы):

SELECT * FROM USERS LIMIT N OFFSET N*P
person Mirthquakes    schedule 26.10.2011
comment
Спасибо Миртквейкс. Я добавил параметр смещения в свой запрос. Настройка равна 8. Насколько я понимаю, смещение пропускает количество пользователей в результатах. Я собираюсь загрузить функцию get_users в файл php и получить результаты foreach, используя страницу шаблона. Я собираюсь установить N равным 8, чтобы на странице было 8 результатов. Как я могу использовать ваш пример mysql для реализации вашего решения? - person gdinari; 28.10.2011
comment
Многое зависит от вас, но я подумал, может быть, в вашем массиве $args будет другая пара ключ/значение, соответствующая текущей странице, на которой вы находитесь (например, 'currentPage'=>'1'). Затем, когда ваш запрос генерируется в get_users, вы можете добавить выражение смещения. $query='... LIMIT '.N.' OFFSET '.N*currentPage - person Mirthquakes; 28.10.2011
comment
Хорошо, есть числовой параметр, который ограничивает общее количество возвращаемых пользователей. Возможно, это то, что я мог бы использовать с вашим решением... Но если это правильно, мне нужно будет установить безграничное число, так как у меня может быть большое количество результатов. Включив параметры number и offset, я, вероятно, мог бы использовать предоставленный вами пример, чтобы заставить работать нумерацию страниц... Что вы думаете? - person gdinari; 28.10.2011
comment
Похоже, вы на правильном пути. Думаю, я немного запутался в функции get_users(). Я мог бы дать лучший совет, если бы увидел исходный код этой функции. - person Mirthquakes; 28.10.2011
comment
Привет, Mirthquakes, я обновил пост исходным кодом get_users. - person gdinari; 28.10.2011
comment
Ах, я не знал, что вы используете Wordpress. Похоже, у вас нет контроля над запросом, извлекающим пользователей. Я просмотрел этот документ: codex.wordpress.org/Class_Reference/WP_User_Query. Кажется, я не могу найти способ произвольно ограничить ваши результаты, поэтому мой подход может не сработать :( - person Mirthquakes; 28.10.2011
comment
Понятно... Что ж, спасибо за попытку помочь. Я посмотрю, есть ли другое решение, которое я могу использовать. Спасибо еще раз! - person gdinari; 28.10.2011