web-dev-qa-db-fra.com

Lier les commentaires des utilisateurs enregistrés à leurs pages de profil

J'essaie de trouver un moyen de lier le 'nom d'utilisateur' dans les commentaires de enregistrés et connectés les utilisateurs vers leurs pages de profil au lieu de l’URL de leur site Web. Et les commentaires des utilisateurs non inscrits à l'URL de leur site Web, comme d'habitude.

Est-ce possible? Ma version wordpress est 3.5.1 et j'utilise le thème par défaut Twenty Twelve.

Voici le code de la fonction 'twentytwelve_comment':

<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
    <article id="comment-<?php comment_ID(); ?>" class="comment">
        <header class="comment-meta comment-author vcard">
            <?php
                echo get_avatar( $comment, 44 );
                printf( '<cite class="fn">%1$s %2$s</cite>',
                    get_comment_author_link(),
                    // If current post author is also comment author, make it known visually.
                    ( $comment->user_id === $post->post_author ) ? '<span> ' . __( 'Post author', 'twentytwelve' ) . '</span>' : ''
                );
                printf( '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>',
                    esc_url( get_comment_link( $comment->comment_ID ) ),
                    get_comment_time( 'c' ),
                    /* translators: 1: date, 2: time */
                    sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() )
                );
            ?>
        </header><!-- .comment-meta -->

        <?php if ( '0' == $comment->comment_approved ) : ?>
            <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'twentytwelve' ); ?></p>
        <?php endif; ?>

        <section class="comment-content comment">
            <?php comment_text(); ?>
            <?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?>
        </section><!-- .comment-content -->

        <div class="reply">
            <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply', 'twentytwelve' ), 'after' => ' <span>&darr;</span>', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
        </div><!-- .reply -->
    </article><!-- #comment-## -->
<?php
    break;
endswitch; // end comment_type check
}
endif;
3
theshorttree

J'ai écrit une solution pour cela il y a quelque temps:

<?php # -*- coding: utf-8 -*-
/**
 * Plugin Name: T5 Comment author URI to blog author page
 * Description: Changes the comment author URI to the blog’s author archive
 * Version:     2012.07.18
 * Author:      Fuxia Scholz
 * Author URI:  https://fuxia.me
 * License:     MIT
 * License URI: http://www.opensource.org/licenses/mit-license.php
 */

if ( ! function_exists( 't5_comment_uri_to_author_archive' ) )
{
    add_filter( 'get_comment_author_url', 't5_comment_uri_to_author_archive' );

    function t5_comment_uri_to_author_archive( $uri )
    {
        global $comment;

        // We do not get the real comment with this filter.
        if ( empty ( $comment )
            or ! is_object( $comment )
            or empty ( $comment->comment_author_email )
            or ! $user = get_user_by( 'email', $comment->comment_author_email )
        )
        {
            return $uri;
        }

        return get_author_posts_url( $user->ID );
    }
}
5
fuxia

Si les utilisateurs sont déjà connectés, il suffit alors de pointer sur la page d'administration pour qu'ils voient leur profil. Le lien peut les diriger vers:

Page de profil utilisateur: http://votresite.com/wp-admin/profile.php

Vous devez modifier votre modèle de commentaires pour vérifier si l'utilisateur est connecté (si je ne me trompe pas, le modèle de commentaires vérifie déjà cela, selon que le thème a été correctement codé). Sinon, vous pouvez utiliser:

is_user_logged_in()

Vous pouvez obtenir le lien de l'auteur des commentaires avec:

comment_author_link()
1
gdaniel

Surtout guidé par le commentaire de s_ha_dum, voici comment vous pouvez générer un lien vers la page d'archive de l'auteur (où figurent tous les messages de cet auteur). Vous devez mettre le code à l'intérieur de la fonction twentytwelve_comment de functions.php , où l'objet $comment est disponible.

$uname = get_the_author_meta( 'user_login', $comment->user_id ); // get username
echo site_url('/author/' . $uname);

En ce qui concerne comment_author_link, vous obtiendrez un lien vers une URL que l’auteur peut avoir fournie dans les informations de son profil. Si ce n'est pas le cas, le nom de l'auteur sera alors retourné.

1
montrealist