Acho que estou quase lá com isso, mas não consigo exibir os links de paginação para um diretório de autores que estou criando.
Meu código está abaixo, mas não sei como fazer com que os links naveguem entre as páginas dos autores para funcionar. Alguém pode me ajudar? Tenho a sensação de que isso pode ser útil, mas não sei como implementá-lo:
obrigado
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? */ ?>
Respostas:
Isso deve levá-lo muito perto. Não testei, mas é quase idêntico a uma configuração que usei algumas vezes.
fonte
Você realmente não deve usar a resposta de Pippin. A consulta é muito ineficiente.
$user_count_query
no exemplo, você pode retornar até 999.999 usuários do banco de dados para o script, com todos os campos do usuário. Isso certamente atingirá a memória e / ou limites de tempo para o PHP se / quando seu site crescer o suficiente.Mas essa pode ter sido a única solução em 2012.
Aqui está uma maneira melhor de fazer isso. Neste exemplo, eu tenho apenas a página seguinte e a anterior, mas se você precisar de paginação numerada, as variáveis estarão lá para construí-la. O WordPress não possui uma função de paginação compatível com WP_User_Query (que eu saiba).
Exemplo mostrando a página 2:
Atualização 8/8/2018: Como adicionar números de página em vez de Avançar / Anterior
Se você deseja ter números de página em vez de links de página seguinte / anterior, eis como você pode configurá-lo. Observe que você precisará substituir os números pelos links das páginas; eles não serão clicáveis neste exemplo (com base em https://stackoverflow.com/a/11274294/470480 , modificado para mostrar uma quantidade consistente de números do meio e não adicionar o "...", a menos que uma página seja realmente ignorada).
Você também pode ver meu arquivo gist, que contém uma função reutilizável para esse fim.
Saída (da página 1 a 10):
fonte
$start_user_num = (($current_page-1) * $users_per_page) + 1;
e$end_user_num = $start_user_num + count($users->get_results());
.Call to a member function get_results() on a non-object
assim que eu alterado$end_user_number
para$start_user_num + ($users_per_page-1);
e que resolveu o problema. Obrigado novamente!$end_user_number
solução. De volta à prancheta, ha!O crédito total deve ir para @ radley-sustaire, para sua resposta, mas eu vi uma pequena falha com ela, então estou compartilhando minha versão da resposta aqui.
Com a minha versão, eu também estava filtrando os resultados por local, palavra-chave etc., portanto, algumas páginas tiveram menos resultados do que a variável '$ users_per_page'. Por exemplo, se meus usuários por página foram configurados para mostrar 10, mas os resultados do filtro retornaram apenas três, obtive 'Exibindo 10 de 3 usuários' na parte superior da página. Obviamente, isso não fazia sentido, então adicionei uma simples declaração "if" para verificar se a contagem de resultados era maior que a variável '$ users_per_page'.
Radley, se você editar sua resposta com a atualização, votarei com prazer nela como a resposta correta, pois acho que é melhor que a solução de Pippin.
Portanto, este é o código final para quem quiser.
fonte