Como utilizar count_user_posts() no WordPress (PHP)3 min leitura

Explicação de como utilizar a função PHP count_user_posts() do WordPress e um exemplo prático de código para listar todos os usuários ordenados pelo número de posts e páginas publicados.

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:

  1. $userid: número do ID do usuário – obrigatório;
  2. $post_type: nome do post type a ser contabilizado ou um array para quando houver mais de um – Opcional, com post como padrão;
  3. $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)

Similar Posts

Você tem algo construtivo sobre este texto para dizer? Então comente abaixo