Com a função PHP count_user_posts() você obtém o número de publicações de um usuário. Ela possui três parâmetros:
- $userid: número do ID do usuário – obrigatório;
- $post_type: nome do post type a ser contabilizado ou um array para quando houver mais de um – Opcional, com
post
como padrão; - $public_only: Valor booleano para retornar somente posts públicos (aqueles com visibilidade diferente de “Privado”) – Opcional, com
false
como valor padrão.
Seguem abaixo alguns exemplos de uso:
<?php
$id_usuario = 1;
$numero_posts = count_user_posts( $id_usuario );
printf(
__( 'O usuário com ID=%d publicou %d posts.', 'danielkossmann' ),
$id_usuario,
$numero_posts
);
// Um possível resultado será: O usuário com ID=1 publicou 20 posts.
$numero_posts_paginas = count_user_posts( $id_usuario, array( 'post', 'page' ) );
printf(
__( '<br>O usuário com ID=%d publicou %d posts e páginas.', 'danielkossmann' ),
$id_usuario,
$numero_posts_paginas
);
// Um possível resultado será: O usuário com ID=1 publicou 45 posts e páginas.
$numero_posts_excluindo_privados = count_user_posts( $id_usuario, 'post', true );
printf(
__( '<br>O usuário com ID=%d publicou %d posts, excluindo privados.', 'danielkossmann' ),
$id_usuario,
$numero_posts_excluindo_privados
);
// Um possível resultado será: O usuário com ID=1 publicou 19 posts, excluindo privados.
Code language: PHP (php)
Quando testei os códigos acima, identifiquei uma incompatibilidade com o plugin PublishPress Authors que fazia a função count_user_posts() não respeitar o segundo e terceiro parâmetro. Se você estiver utilizando algum plugin que altera como os autores do WordPress funcionam, pode ser que encontre problemas também.
Listar todos os usuários do WordPress ordenados pelo número de posts e páginas publicados
Um possível uso da função count_user_posts() é listar todos os usuários que já publicaram posts e páginas, ordenando pela quantidade de publicações. Utilizei como base, o código de exemplo da função PHP get_users() para obter a lista com todos os usuários. Veja abaixo como ficou o código:
<?php
// Lista todos os usuários que já publicaram ordenados pelo número de publicações
$usuarios = get_users(
array(
'has_published_posts' => true,
'order' => 'DESC',
'orderby' => 'post_count',
'fields' => array(
'ID',
'user_email'
)
)
);
// Verifica se foram encontrados usuários
if ( !empty( $usuarios ) ) {
// Inicia uma lista ordenada
echo "<ol>";
// Seleciona cada um dos usuários
foreach ( $usuarios as $usuario ) {
// Obtem a quantidade de posts e páginas publicadas pelo usuário
$posts = count_user_posts( $usuario->ID, 'post' );
$paginas = count_user_posts( $usuario->ID, 'page' );
// Inicia um item da lista
echo "<li>";
// Exibe as informações de forma que o conteúdo seja traduzível
printf(
__( 'O usuário %s publicou %d posts e %d páginas, totalizando %d publicações.', 'danielkossmann' ),
$usuario->user_email,
$posts,
$paginas,
$posts + $paginas
);
echo "</li>";
}
echo "</ol>";
} else {
_e( 'Não foi encontrado nenhum usuário que já publicaram posts ou páginas.', 'danielkossmann' );
}
Code language: PHP (php)
Deixe um comentário