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 );
}
}
しかし、この関数は最初のものを無効にするので、私は最新のアバターを手に入れますが、作者のリンクを失います。両方の要素を同時に置き換えるにはどうすればよいですか(アバターとリンク)。
以前は仕事でやけどを負ったかもしれませんが、今朝、同じコードをもう一度試して、正常に動作するようにしました。
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つの関数は互いに衝突しません。