web-dev-qa-db-ja.com

Get_avatar関数を使う代わりに?

著者の写真を表示するためにWPハックを使用しました。例えば、私のsingle.phpは作者の写真を表示する作者スラッグを持っています。

私は私のtheme/imagesフォルダにauthorsというフォルダを作りました。著者のIDに基づいて、ファイルに1.jpg、2.jpgなどの名前を付けます。

だから私はこの画像をと呼びます

<img src="<?php bloginfo('template_directory') ?>/images/authors/<?php the_author_ID()?>.jpg" alt="<?php the_author(); ?>">

今私はサイドバーの作者を表示するプラグインを修正しています。ただし、このプラグインはget_avatar関数を使用します。これは次のとおりです。

/**
                 * If show avatar option is checked, add get_avatar function to cache.
                 */
                if($jmetc_options['show_avatar'] == 1) {
                    $jmevar['cache'] .= get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']);
                }

私が使用しているデフォルトのコードを使用するために、get_avatarを使用または変更する方法について、誰かにアドバイスをもらえますか

7
Sledge81

get_avatar()関数は、アバターマークアップを変更するために使用できるget_avatarフィルターフックを適用します。

return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

I thinkこれは、このフィルタに接続する正しい方法です。

function mytheme_get_avatar( $avatar ) {
    $avatar = '<img src="<' . get_template_directory_uri() . '/images/authors/' . get_the_author_ID() . '.jpg" alt="' . get_the_author() . '">';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar' );

_編集_

pSこのアプローチに代わる良い方法は シンプルローカルアバター プラグインかもしれません。

編集2

フィルタはadd_filter()ではなくapply_filters()を使って適用されます。それは私のミスです。今すぐ修正!

編集3

これは正しいとは思わない。

P.S:わかりやすくするためにget_avatar($tc->comment_author_email, $jmetc_options['avatar_size']);add_filter('get_avatar', $avatar, $id_or_email, $size, $default, $alt);に置き換えました

まず、テンプレートファイルでget_avatar()を呼び出して、以前と同じパラメータをすべて渡します。 add_filter()呼び出しはfunctions.phpに属します。

次に、フィルタ関数に追加のパラメータを渡すことができます。例えば。:

function mytheme_get_avatar( $avatar, $id_or_email, $size ) {
    $avatar = '<img src="<' . get_template_directory_uri() . '/images/authors/' . $id_or_email . '.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );
10
Chip Bennett

上記の機能に多少の誤差があります

これを使ってください。

function mytheme_get_avatar( $avatar, $id_or_email, $size ) {
    $avatar = '<img src="' . get_template_directory_uri() . '/images/authors/' . $id_or_email . '.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );
0
Juergen