web-dev-qa-db-ja.com

コメントアバターとリンクを同時に置き換える

Wordpressのコメント投稿者データを置き換えようとしています。

1)アバター(Gravatarの代わりにアップロードされた画像)

2)著者リンク(メンバーのみコメントできるので著者ページへのリンク)

this question からこれに対する優れた解決策を見つけ、次のコードを実装しました。

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 );
}
}

このコードはリンクの置き換えに最適なので、アバターの置き換えにも使用したいと思います。関数のコピーを作成し、名前と戻り値を変更しました。

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

function my_comment_imgs( $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_avatar( $user->ID );
}
}

しかし、この関数は最初のものを無効にするので、私は最新のアバターを手に入れますが、作者のリンクを失います。両方の要素を同時に置き換えるにはどうすればよいですか(アバターとリンク)。

2
fjanecic

以前は仕事でやけどを負ったかもしれませんが、今朝、同じコードをもう一度試して、正常に動作するようにしました。

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

function comment_imgs( $avatar, $id_or_email, $size, $default, $alt )
{
    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_avatar( $user->ID );
}
}

オリジナルのコードの功績は、作者ページへのリンクのために Thomas Scholz に行きます。この修正はローカルのアバターを検索し、2つの関数は互いに衝突しません。

0
fjanecic