web-dev-qa-db-ja.com

Comments_templateを使用するときにGravatarのサイズを変更する方法

Gravatarのデフォルトサイズを変更しようとしています。 WPで生成されたコメントテンプレートを使用しているので(comments_template()関数を使用して)、私はフィルタに目を向けました。これが私のカスタムコードです:

function change_avatar_size ( $id_or_email, $size = 100, $default = '', $alt = '', $args = null ) {

    $args['size']    = (int) $size;  

    $url2x = get_avatar_url( $id_or_email, array_merge( $args, array( 'size' => $args['size'] * 2 ) ) );

    $args = get_avatar_data( $id_or_email, $args );

    $url = $args['url']; 

    $class = array( 'avatar', 'avatar-' . (int) $args['size'], 'photo' );  

    $avatar = sprintf(
        "<img alt='%s' src='%s' srcset='%s' class='%s' height='%d' width='%d' %s/>",
        esc_attr( $args['alt'] ),
        esc_url( $url ),
        esc_attr( "$url2x 2x" ),
        esc_attr( join( ' ', $class ) ),
        (int) $args['height'],
        (int) $args['width'],
        $args['extra_attr']
    );

    return $avatar;

}
add_filter( 'get_avatar', 'change_avatar_size' );

サイズは変わりますが、正しいGravatar URLを取得していません。生成されたリンクが正しくないかのように、私は実際にデフォルトのGravatar画像を取得しています。何か案は?

1
Bruno Kos

これは、Brunoが使っていた方法を使ってそれを行う方法です(これを疑問に思う人たちのために):

wp_list_comments( array(
    'avatar_size' => 32
) );

あなたのユースケースに応じて、このように これを行うこともできます

global $comment;
echo get_avatar($comment, 64)
1
Bryan Willis

それを見つけました - wp_list_commentsの中にavatar_sizeパラメータがあることを考えると、フィルタを気にする必要はありません。 https://developer.wordpress.org/reference/functions/wp_list_comments/

0
Bruno Kos