web-dev-qa-db-fra.com

Afficher la page de l'auteur si l'utilisateur n'a pas de message

J'ai une page avec des profils dans lesquels les gens peuvent poster ou comment sur un post. Le problème est que si cet utilisateur choisit de commenter au lieu de publier, il n'aura pas de author page tant qu'il n'aura pas envoyé de publication. Y a-t-il un moyen de montrer la page auteur de toute façon? Parce que j'ai une fonction qui montre les commentaires sur la page de l'auteur, mais parce qu'elle n'a pas de message, ça ne s'affichera pas aussi ...

J'espère que quelqu'un pourra m'aider.

PS: J'ai déjà essayé plusieurs plugins, mais ça n'a pas marché.

Pour info: c'est le comportement par défaut de Wordpress et j'utilise le modèle par défaut author.php qui a une boucle "if have posts", sinon, une boucle loop-no-posts. Donc, la page de l'auteur n'est pas créée s'il n'y a pas de message. C'est le point entier.

Edit: mon code:

        <?php if (have_posts()) : ?>

            <ul><?php
    global $wpdb;
    $user_id = $post->post_author;  
    $where = 'WHERE comment_approved = 1 AND user_id = ' . $user_id ;

    $user = get_userdata($user_id);

    ?>

   <?php while (have_posts()) : the_post(); ?>

            <?php responsive_entry_before(); ?>
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>       

                <div class="post-entry"><blockquote>
                    <?php if ( has_post_thumbnail()) : ?>
                        <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" >

                        </a>
                    <?php endif; ?>
                    <?php the_excerpt(); ?>

            </article>    
            <?php responsive_entry_after(); ?>

        <?php 
        endwhile; 

        /* get_template_part( 'loop-nav' ); */

    else : 

        get_template_part( 'loop-no-posts' ); 

    endif; 
    ?>  


<?php
    $args = array(
        'user_id' => $user->ID,
        'number' => 10, // how many comments to retrieve
        'status' => 'approve'
        );

    $comments = get_comments( $args );

    if ( $comments )
    {
        foreach ( $comments as $c )
        {
        $output.= '<a href="'.get_comment_link().'">';
        $output.= get_the_title();
        $output.= '</a>';
        }

        echo $output;
    } else { echo "bla";}?>

</div>
1
Johan
<?php 
        $curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $author_name) : get_userdata(intval($author)); 
        ?>
        <?php if ( have_posts() ) ?>
        <h2>Posts by <?php echo $curauth->nickname; ?>:</h2>
            <ul>
            <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <li>
                    <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
                    <?php the_title(); ?></a>,
                    <?php the_time('d M Y'); ?> in <?php the_category('&');?>
                </li>
            <?php endwhile; else: ?>
                <p><?php _e('No posts by this author.'); ?></p>
            <?php endif; ?>
            </ul>
    <?php
        $args = array(
            'user_id' => $curauth->ID,
            'number' => 10, // how many comments to retrieve
            'status' => 'approve'
            );

        $comments = get_comments( $args );

        if ( $comments )
        {
            $output.= "<ul>";
            foreach ( $comments as $c )
            {
            $output.= '<li>';
            $output.= '<a href="'.get_comment_link( $c->comment_ID ).'">';
            $output.= get_the_title($c->comment_post_ID);
            $output.= '</a>';
            $output.= "</li>\n";
            }
            $output.= '</ul>';

            echo $output;
        } else { 
            echo "bla";
        }
?>

Modifié à partir de ici.

Edit: Ajout du code OP

0
Vigs