Отображать пользователей в виде таблицы HTML - PullRequest
0 голосов
/ 04 марта 2011

Я хочу отображать пользователей WordPress в виде таблицы, как https://stackoverflow.com/users

Рекомендуемая функция - wp_list_authors, но не ясно, как можно настроить макет.

Скажем, я хочу отображать пользователей в ячейках таблицы 5 x 5 со ссылкой на следующую страницу.

Пожалуйста, совет.

Позвольте мне немного объяснить.

В отличие от get_users_of_blog wp_list_authors не возвращает массив. Если бы это было - тогда имея массив, я могу построить любую таблицу, используя foreach. Но wp_list_authors создает теги привязки самостоятельно и возвращает монолитный HTML-блок. Единственным вариантом управления макетом будет передача некоторого рода до и после тегов. Но эта функция не обеспечивает такую ​​функциональность.

1 Ответ

1 голос
/ 04 марта 2011

Насколько я знаю, нет такой функции, как get_authors(), но вы можете сделать это с помощью необработанного SQL-запроса в пользовательском шаблоне:

Обновление: для нумерации страниц

Я не уверен, что для этого можно использовать встроенную нумерацию WordPress, поскольку параметр paged отображается только для сообщений. Вы можете заполнить глобальную переменную $ post в цикле или что-то в этом роде ... Есть много подходов, но давайте перейдем к "PHP". = D

<?php
    $i = 0;
    $limit = 25;
    $offset = ($o = trim($_GET['offset'])) ? $o : 0;
    $users = $wpdb->get_results("SELECT user_nicename ... FROM {$wpdb->users} LIMIT $offset,$limit");
?>
<?php foreach ($users as $user) : ?>
    <div class="someclass">
        <?php echo $user->user_nicename; ?>
    </div>
    <?php if ($i++ % $number_of_columns == 0) : ?>
        <div class="padder"></div>
    <?php endif; ?>
<?php endforeach; ?>

Чтобы смоделировать внешний вид таблицы, просто поместите «someclass» влево и установите фиксированную ширину. Div "padder" (с плавающей точкой влево и шириной 100%) гарантирует, что ячейки будут выровнены по самой верхней ячейке в этом ряду.

А для нумерации страниц:

<?php $n = $wpdb->get_var("SELECT count(ID) FROM {$wpdb->users}"); ?>
<?php $o = $offset - $limit; ?>
<?php if ($offset > 0) : ?>
    <a class="prev" href="?offset=<?php echo $offset - $limit; ?>">Previous</a>
<?php endif; ?>
<?php $o = $offset + $limit; ?>
<?php if ($o < $n) : ?>
    <a class="next" href="?offset=<?php echo $o; ?>">Next</a>
<?php endif; ?>

Код от мозга к клавиатуре. Опять не проверено.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...