Je pense que j'y suis presque, mais je ne peux pas afficher les liens de pagination pour un répertoire des auteurs que je crée.
Mon code est ci-dessous, mais je ne sais pas comment faire fonctionner les liens pour naviguer entre les pages des auteurs. Quelqu'un peut-il m'aider? J'ai l'impression que cela pourrait être utile, mais je ne sais pas comment le mettre en œuvre:
Merci
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? */ ?>
Réponses:
Cela devrait vous rapprocher vraiment. Je ne l'ai pas testé, mais il est presque identique à une configuration que j'ai utilisée plusieurs fois.
la source
Vous ne devriez vraiment pas utiliser la réponse de Pippin. La requête est très inefficace.
$user_count_query
dans l'exemple peut renvoyer jusqu'à 999 999 utilisateurs de votre base de données vers votre script, avec tous les champs utilisateur. Cela atteindra sûrement la mémoire et / ou les limites de temps pour PHP si / quand votre site grandit suffisamment.Mais cela a peut-être été la seule solution en 2012.
Voici une meilleure façon de procéder. Dans cet exemple, je n'ai que la page suivante et précédente, mais si vous avez besoin d'une pagination numérotée, les variables sont là pour le construire. WordPress n'a pas de fonction de pagination compatible avec WP_User_Query (à ma connaissance).
Exemple montrant la page 2:
Mise à jour 6/8/2018: comment ajouter des numéros de page au lieu de Suivant / Précédent
Si vous souhaitez avoir des numéros de page au lieu des liens de page suivante / précédente, voici comment vous pouvez configurer cela. Notez que vous devrez remplacer les nombres par des liens de page, ils ne seront pas cliquables dans cet exemple (basé sur /programming//a/11274294/470480 , modifié pour afficher une quantité cohérente de nombres intermédiaires et ne pas ajouter le "..." sauf si une page est réellement sautée).
Vous pouvez également voir mon fichier gist qui contient une fonction réutilisable à cet effet.
Sortie (de la page 1 à 10):
la source
$start_user_num = (($current_page-1) * $users_per_page) + 1;
et$end_user_num = $start_user_num + count($users->get_results());
.Call to a member function get_results() on a non-object
si j'ai modifié$end_user_number
à$start_user_num + ($users_per_page-1);
et résolu le problème. Merci encore!$end_user_number
dans ma solution. Retour à la planche à dessin, ha!Le mérite devrait être attribué à @ radley-sustaire pour sa réponse, mais j'ai repéré un petit problème avec elle, je partage donc ma version de la réponse ici.
Avec ma version, je filtrais également les résultats par emplacement, mot-clé, etc., donc certaines pages avaient moins de résultats que la var '$ users_per_page'. Ainsi, par exemple, si mes utilisateurs par page étaient définis pour afficher 10, mais que les résultats du filtre ne renvoyaient que 3 utilisateurs, j'obtenais «Affichage de 10 utilisateurs sur 3» en haut de la page. Évidemment, cela n'avait aucun sens, j'ai donc ajouté une simple instruction "si" pour vérifier si le nombre de résultats était supérieur à la variable '$ users_per_page'.
Radley, si vous modifiez votre réponse avec la mise à jour, je voterai volontiers pour elle comme la bonne réponse car je pense que c'est mieux que la solution de Pippin.
C'est donc le code final pour tous ceux qui le souhaitent.
la source