Myślę, że już prawie jestem przy tym, ale nie mogę wyświetlić linków do stronicowania dla katalogu autorów, które tworzę.
Mój kod jest poniżej, ale nie wiem, jak uzyskać linki do nawigacji między stronami autorów do pracy. Czy ktoś może mi pomóc? Mam wrażenie, że to może się przydać, ale nie wiem, jak to zaimplementować:
Dzięki
Osu
<?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? */ ?>
Odpowiedzi:
To powinno cię naprawdę zbliżyć. Nie testowałem tego, ale jest prawie identyczny z konfiguracją, z której korzystałem kilka razy.
źródło
Naprawdę nie powinieneś używać odpowiedzi Pippin. Zapytanie jest bardzo nieefektywne.
$user_count_query
w tym przykładzie może zwrócić do skryptu do 999,999 użytkowników ze wszystkimi polami użytkownika. To z pewnością uderzy w pamięć i / lub limity czasowe dla PHP, jeśli / gdy Twoja strona będzie wystarczająco duża.Ale to mogło być jedyne rozwiązanie w 2012 roku.
Oto lepszy sposób, aby to zrobić. W tym przykładzie mam tylko następną i poprzednią stronę, ale jeśli potrzebujesz numerowanego stronicowania, zmienne są tam, aby je rozwinąć. WordPress nie ma funkcji stronicowania zgodnej z WP_User_Query (o ile mi wiadomo).
Przykład pokazujący stronę 2:
Aktualizacja 6/8/2018: Jak dodawać numery stron zamiast Następny / Poprzedni
Jeśli chcesz mieć numery stron zamiast linków do następnej / poprzedniej strony, oto jak możesz to skonfigurować. Pamiętaj, że musisz zastąpić liczby linkami do stron, w tym przykładzie nie będzie można ich kliknąć (na podstawie https://stackoverflow.com/a/11274294/470480 , zmodyfikowano tak, aby wyświetlać stałą liczbę liczb średnich i nie dodawać „...”, chyba że strona zostanie faktycznie pominięta).
Możesz również zobaczyć mój plik gist, który zawiera funkcję wielokrotnego użytku do tego celu.
Wyjście (od strony 1 do 10):
źródło
$start_user_num = (($current_page-1) * $users_per_page) + 1;
i$end_user_num = $start_user_num + count($users->get_results());
.Call to a member function get_results() on a non-object
tak I wprowadza$end_user_number
się$start_user_num + ($users_per_page-1);
i rozwiązał problem. Dzięki jeszcze raz!$end_user_number
mojego rozwiązania. Wróć do deski kreślarskiej, ha!Pełne podziękowania powinny zostać przekazane @ radley-sustaire za jego odpowiedź, ale zauważyłem drobną usterkę, dlatego dzielę się swoją wersją odpowiedzi tutaj.
W mojej wersji filtrowałem również wyniki według lokalizacji, słowa kluczowego itp., Więc niektóre strony miały mniej wyników niż zmienna „$ users_per_page”. Na przykład jeśli dla moich użytkowników na stronie ustawiono wyświetlanie 10, ale wyniki filtru zwracają tylko 3 użytkowników, u góry strony wyświetla się „Wyświetlanie 10 z 3 użytkowników”. Oczywiście nie miało to sensu, dlatego dodałem prostą instrukcję „if”, aby sprawdzić, czy liczba wyników jest wyższa niż zmienna „$ users_per_page”.
Radley, jeśli edytujesz swoją odpowiedź za pomocą aktualizacji, chętnie zagłosuję na nią jako poprawną odpowiedź, ponieważ uważam, że jest lepsza niż rozwiązanie Pippina.
To jest ostateczny kod dla każdego, kto tego chce.
źródło