web-dev-qa-db-ja.com

登録ユーザーからのコメントを自分のプロフィールページにリンクする

登録済みからのコメントに 'username'をリンクする方法を見つけようとしていますユーザーは自分のWebサイトのURLではなく自分のプロフィールページにアクセスします。そして、未登録のユーザーからいつものように彼らのウェブサイトのURLにコメントします。

これは可能ですか?私のワードプレスのバージョンは3.5.1であり、私はデフォルトのテーマTwenty Twelveを使用しています。

これが '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

私はしばらく前にそのための解決策を書きました:

<?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

ユーザーがすでにログインしている場合は、単に管理者ページをポイントするだけで、自分のプロフィールが表示されます。リンクはそれらを指すことができます:

ユーザープロフィールページ: http://yoursite.com/wp-admin/profile.php

ユーザーがログインしているかどうかを確認するには、コメントテンプレートを編集する必要があります(テーマが適切にコーディングされているかどうかに応じて、コメントテンプレートが既にそれを確認していると間違えない場合)。そうでない場合は、使用することができます。

is_user_logged_in()

あなたはコメントの著者のリンクを得ることができます:

comment_author_link()
1
gdaniel

主にs_ha_dumのコメントに導かれて、ここにあなたが著者のアーカイブページへのリンクを生成する方法があります(そこには、その著者によるすべての記事がリストされています)。コードをfunctions.phptwentytwelve_comment関数内に配置する必要があります。ここで、$commentオブジェクトは利用可能です。

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

comment_author_linkに関しては、それはあなたに彼らのプロフィール情報で提供されたかもしれないURL作者へのリンクを得るでしょう。そうでなければ、それは単に作者の名前を返すでしょう。

1
montrealist