es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar las categorías de los blogs y el número total de blogs realizados por cada usuario, se pueden utilizar las funciones de WordPress get_terms() y WP_User_Query().

    Aquí hay un ejemplo de código para lograr esto:

    // Obtener todas las categorías de blogs
    $categories = get_terms( array(
        'taxonomy' => 'category',
        'hide_empty' => true,
    ) );
    
    // Recorrer cada categoría
    foreach ( $categories as $category ) {
        // Obtener los IDs de usuario que han publicado blogs en esta categoría
        $args = array(
            'author__not_in' => array( 0 ),
            'tax_query' => array(
                array(
                    'taxonomy' => 'category',
                    'field' => 'term_id',
                    'terms' => $category->term_id,
                ),
            ),
        );
        $users_query = new WP_User_Query( $args );
        $users = $users_query->get_results();
    
        // Recorrer cada usuario y contar sus blogs en esta categoría
        foreach ( $users as $user ) {
            $count = 0;
            $user_posts = get_posts( array(
                'author' => $user->ID,
                'posts_per_page' => -1,
                'category' => $category->term_id,
            ) );
            foreach ( $user_posts as $post ) {
                if ( $post->post_status == 'publish' ) {
                    $count++;
                }
            }
    
            // Mostrar el recuento en el perfil del usuario
            echo '<a href="' . get_author_posts_url( $user->ID ) . '">' . $user->user_login . '</a> ha publicado ' . $count . ' blogs en ';
            echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a><br>';
        }
    }
    

    El código anterior mostrará la salida como se muestra en la imagen proporcionada.

Comments are closed.