Obtenha todos os autores com pelo menos uma postagem de 'tipo de postagem personalizada'

4

Como posso conseguir isso? Eu encontrei count_user_posts e get_users , mas como eu iria mesclá-los no resultado desejado? Eu realmente tenho que usar uma consulta de banco de dados do WP?

    
por user9 29.10.2013 / 11:37

1 resposta

2

Por enquanto, o post_type support não está disponível no momento para count_user_posts() ,

então coloque o código abaixo no arquivo functions.php do tema.

function count_user_posts_by_type( $userid, $post_type = 'post' ) {
    global $wpdb;
    $where = get_posts_by_author_sql( $post_type, true, $userid );
    $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
    return apply_filters( 'get_usernumposts', $count, $userid );
}

Agora, essa função levaria user id e post_type como parâmetro post_type='post' sendo o padrão e obtém a contagem da postagem desse usuário para o post_type em questão

Você pode verificar isso repetindo abaixo onde é necessário verificar a contagem de postagens do usuário.

$user_posts = count_user_posts_by_type( 1, 'page' );
echo $user_posts; // This would return the post count for user id 1 and post_type page.

Você pode fazer o mesmo para o tipo de postagem personalizado. Agora você precisa obter os IDs do usuário e passar por essa função e exibir o nome dos autores com 1 ou mais postagens ou

Você pode adicionar o código abaixo onde deseja exibir a lista de usuários com uma ou mais postagens

$blogusers = get_users();
foreach ( $blogusers as $user ) {
    if ( count_user_posts_by_type( $user->ID, 'post') ) {
         echo $user->user_nicename . '</br>';
    }
}

O código acima lista todos os usuários com uma ou mais postagens publicadas de post_type post .

    
por Maruti Mohanty 29.10.2013 / 12:16