Я думаю, что я почти с этим, но я не могу получить ссылки на нумерацию страниц для каталога авторов, которые я создаю.
Мой код ниже, но я не знаю, как заставить работать ссылки на страницах авторов. Может кто-нибудь помочь мне? У меня есть ощущение, что это может быть полезно, но я не знаю, как это реализовать:
Спасибо
Осу
<?php
/* ****************************************************************** */
/* !LIST AUTHORS */
/* ****************************************************************** */
// THANKS TO:
// http://www.mattvarone.com/wordpress/list-users-with-wp_user_query/
// pagination
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // Needed for pagination
$paged -= 1;
$limit = 2;
$offset = $paged * $limit;
// prepare arguments
$args = array(
// search only for Authors role
'role' => 'Subscriber',
// order results by display_name
'orderby' => 'display_name',
// return all fields
'fields' => 'all_with_meta',
'number' => $limit,
'offset' => $offset
);
// Create the WP_User_Query object
$wp_user_query = new WP_User_Query($args);
// Get the results
$authors = $wp_user_query->get_results();
// Check for results
if (!empty($authors))
{
echo '<div class="author-entry">';
// loop trough each author
foreach ($authors as $author)
{
$author_info = get_userdata($author->ID); ?>
<span style="float:left;padding:0 5px 0 0;"><?php echo get_avatar( $author->ID, 50 ); /* http://codex.wordpress.org/Function_Reference/get_avatar */ ?></span>
<span class="fn"><strong>First name</strong> : <?php echo $author_info->first_name; ?></span><br />
<span class="ln"><strong>Last name</strong> : <?php echo $author_info->last_name; ?></span><br />
<span class="em"><strong>Email address</strong> : <a href="mailto:<?php echo $author_info->user_email; ?>"><?php echo $author_info->user_email; ?></a></span><br />
<span class="we"><strong>Website</strong> : <a href="<?php echo $author_info->user_url; ?>"><?php echo $author_info->user_url; ?></a></span><br />
<span class="de"><strong>Bio</strong> :<br /><?php echo $author_info->description ; ?></span>
<div class="clear"> </div>
<?php
}
echo '</div>';
} else {
echo 'No authors found';
}
?>
<?php /* WHAT DO I PUT HERE TO CREATE THE PAGINATION LINKS? */ ?>
Ответы:
Это должно быть очень близко. Я не тестировал его, но он почти идентичен настройке, которую я использовал несколько раз.
источник
Вы действительно не должны использовать ответ Пиппина. Запрос очень неэффективен.
$user_count_query
в этом примере можно вернуть до 999 999 пользователей из вашей базы данных в ваш сценарий со всеми пользовательскими полями. Это наверняка затронет память и / или ограничения по времени для PHP, если / когда ваш сайт станет достаточно большим.Но это, возможно, было единственным решением еще в 2012 году.
Вот лучший способ сделать это. В этом примере у меня есть только следующая и предыдущая страницы, но если вам нужна нумерованная нумерация страниц, то для ее создания есть переменные. В WordPress нет функции разбиения на страницы, которая совместима с WP_User_Query (насколько мне известно).
Пример показа страницы 2:
Обновление 8/8/2018: Как добавить номера страниц вместо Следующая / Предыдущая
Если вы хотите иметь номера страниц вместо ссылок на следующую / предыдущую страницу, вот как это можно настроить. Обратите внимание, что вам нужно будет заменить числа ссылками на страницы, в этом примере они не будут активными (на основе https://stackoverflow.com/a/11274294/470480 , измененных для отображения согласованного количества средних чисел и не добавляющих "...", если страница фактически не пропущена).
Вы также можете увидеть мой файл gist, который содержит функцию многократного использования для этой цели.
Вывод (со страницы 1 на 10):
источник
$start_user_num = (($current_page-1) * $users_per_page) + 1;
и$end_user_num = $start_user_num + count($users->get_results());
.Call to a member function get_results() on a non-object
так что я с поправками$end_user_number
к$start_user_num + ($users_per_page-1);
и решить эту проблему. Еще раз спасибо!$end_user_number
в моем решении. Вернуться к чертежной доске, ха!Полный ответ должен быть получен от @ radley-sustaire за его ответ, но я заметил небольшой сбой, так что я делюсь своей версией ответа здесь.
В моей версии я также фильтровал результаты по местоположению, ключевым словам и т. Д., Поэтому некоторые страницы имели меньше результатов, чем переменная '$ users_per_page'. Так, например, если для моих пользователей на странице было установлено значение 10, но результаты фильтра вернули только 3 пользователей, я получил «Отображение 10 из 3 пользователей» в верхней части страницы. Очевидно, что это не имело смысла, поэтому я добавил простой оператор if, чтобы проверить, было ли количество результатов больше, чем переменная $ users_per_page.
Рэдли, если ты отредактируешь свой ответ с помощью обновления, я с радостью проголосую за него как за правильный ответ, так как считаю, что он лучше решения Пиппина.
Так что это окончательный код для всех, кто этого хочет.
источник