Como listar usuários que escreveram tipos de postagem personalizados e ocultaram aqueles que não o fizeram?

Estou tentando criar uma lista de autores que mostre todos os autores que escreveram uma postagem de Tipo de postagem personalizada e esconder autores que não possuem postagens. Com wp_list_authors seria fácil mostrar aos usuários que escreveram Posts (não CPT).

Isso não mostra os usuários que publicaram Tipos de postagem personalizados, ele afeta apenas para postagens.

 wp_list_authors('hide_empty=1'); 

Eu olhei para a function get_users , mas consegui apenas criar uma lista com ele (mais controle sobre a lista, mas não o que eu estava apontando).

  $blog_url = get_bloginfo('home'); $blogusers = get_users('orderby=display_name&role=editor'); foreach ($blogusers as $user) { echo '
  • user_login . '">' . $user->display_name . '
  • '; }

    Eu achei esse post realmente agradável tratando de mostrar as contagens de postagens no backend. Ele define uma function _yoursite_get_author_post_type_counts() que possivelmente talvez seja uma ajuda nisso …

    Alguma idéia de como fazer isso? Obrigado! 🙂

    Solutions Collecting From Web of "Como listar usuários que escreveram tipos de postagem personalizados e ocultaram aqueles que não o fizeram?"

    wp_list_authors() , internamente recebe postagens que são apenas de tipo post . Veja a linha 294 http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/author-template.php#L273

    Como você observou, esta resposta é excelente e, com algumas modificações, pode fazer o que deseja.

     function wpse31443_author_has_custom_post_type( $post_author, $post_type ) { global $wp_post_types; // If nonexistent post type found return if ( array_intersect((array)$post_type, array_keys($wp_post_types)) != (array)$post_type ) return false; static $posts = NULL; // Cache the query internally if ( !$posts ) { global $wpdb; $sql = "SELECT `post_type`, `post_author`, COUNT(*) AS `post_count`". " FROM {$wpdb->posts}". " WHERE `post_type` NOT IN ('revision', 'nav_menu_item')". " AND `post_status` IN ('publish', 'pending')". " GROUP BY `post_type`, `post_author`"; $posts = $wpdb->get_results( $sql ); } foreach( $posts as $post ) { if ( $post->post_author == $post_author and in_array( $post->post_type, (array)$post_type ) and $post->post_count ) return true; } return false; } 

    Você já sabe como get_users , então deve ser um pedaço de bolo para configurar um loop foreach simples e alimentar as IDs de usuário em sua nova function.

    Testei a function até certo ponto, deveria funcionar como está, mas pode exigir alguns ajustes. Deixe-me saber se você tem alguma dúvida e / ou como posso melhorar minha resposta.