Ich glaube, ich bin damit fast fertig, aber ich kann die Paginierungslinks für ein Verzeichnis der Autoren, die ich erstelle, nicht anzeigen.
Mein Code ist unten, aber ich weiß nicht, wie ich die Links zum Navigieren zwischen den Seiten der Autoren zum Laufen bringen kann. Kann mir jemand helfen? Ich habe das Gefühl, dass dies von Nutzen sein könnte, aber ich weiß nicht, wie ich es implementieren soll:
Vielen Dank
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? */ ?>
Antworten:
Dies sollte Sie wirklich nah bringen. Ich habe es nicht getestet, aber es ist fast identisch mit einem Setup, das ich einige Male verwendet habe.
quelle
Sie sollten die Antwort von Pippin wirklich nicht verwenden. Die Abfrage ist sehr ineffizient.
$user_count_query
Im Beispiel können bis zu 999.999 Benutzer aus Ihrer Datenbank mit allen Benutzerfeldern an Ihr Skript zurückgegeben werden. Dies wird sicherlich den Speicher und / oder das Zeitlimit für PHP erreichen, wenn Ihre Site groß genug wird.Aber das war vielleicht die einzige Lösung im Jahr 2012.
Hier ist ein besserer Weg, dies zu tun. In diesem Beispiel habe ich nur die nächste und vorherige Seite, aber wenn Sie eine nummerierte Paginierung benötigen, sind die Variablen da, um sie aufzubauen. WordPress hat keine Paginierungsfunktion, die mit WP_User_Query kompatibel ist (meines Wissens).
Beispiel für Seite 2:
Update 08.06.2008: Hinzufügen von Seitenzahlen anstelle von Weiter / Zurück
Wenn Sie Seitenzahlen anstelle von Links zur nächsten / vorherigen Seite haben möchten, können Sie dies wie folgt einrichten. Beachten Sie, dass Sie die Zahlen durch Seitenlinks ersetzen müssen. In diesem Beispiel können sie nicht angeklickt werden (basierend auf /programming//a/11274294/470480 , geändert, um eine konsistente Anzahl von mittleren Zahlen anzuzeigen und nicht hinzuzufügen das "...", es sei denn, eine Seite wird tatsächlich übersprungen).
Sie können auch meine Hauptdatei sehen, die eine wiederverwendbare Funktion für diesen Zweck enthält.
Ausgabe (von Seite 1 bis 10):
quelle
$start_user_num = (($current_page-1) * $users_per_page) + 1;
und$end_user_num = $start_user_num + count($users->get_results());
.Call to a member function get_results() on a non-object
so geändert ich$end_user_number
zu$start_user_num + ($users_per_page-1);
und dass das Problem gelöst. Danke noch einmal!$end_user_number
in meiner Lösung angezeigt. Zurück zum Zeichenbrett, ha!Der volle Kredit sollte an @ radley-sustaire für seine Antwort gehen, aber ich habe einen kleinen Fehler entdeckt, also teile ich meine Version der Antwort hier.
Mit meiner Version habe ich die Ergebnisse auch nach Speicherort, Schlüsselwort usw. gefiltert, sodass einige Seiten weniger Ergebnisse hatten als die Variable '$ users_per_page'. Wenn zum Beispiel meine Benutzer pro Seite auf 10 eingestellt waren, die Ergebnisse des Filters jedoch nur 3 Benutzer zurückgaben, wurde oben auf der Seite "10 von 3 Benutzern anzeigen" angezeigt. Offensichtlich machte dies keinen Sinn, also fügte ich eine einfache "if" -Anweisung hinzu, um zu überprüfen, ob die Ergebnisanzahl höher als die Variable '$ users_per_page' war.
Radley, wenn Sie Ihre Antwort mit dem Update bearbeiten, werde ich sie gerne als die richtige Antwort wählen, da ich denke, dass sie besser ist als Pippins Lösung.
Dies ist also der endgültige Code für jeden, der ihn möchte.
quelle