问题描述

我用一个 WP 黑客来显示作者的照片。例如,我的 s​​ingle.php 有一个作者 slug 显示作者的图片。

我在我的主题/图像文件夹中创建了一个名为 authors 的文件夹。根据作者的 ID,我命名为 1.jpg,2.jpg 等等。

所以我称这个图像为

<img src="<?php%20bloginfo('template_directory')%20?>/images/authors/<?php%20the_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 以使用我使用的默认代码?

最佳解决方案

get_avatar()功能适用于 get_avatar 过滤器挂钩,可用于更改头像标记:

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

我认为这是挂钩这个过滤器的正确方法:

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

编辑

附:这种方法的一个不错的选择可能是 Simple Local Avatars 插件。

编辑 2

使用 add_filter()而不是 apply_filters()应用过滤器。那是我的错字现在固定!

编辑 3

我不认为这是正确的:

P.S: Just to clarify.. I replaced get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']); with 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="<'%20.%20get_template_directory_uri()%20.%20'/images/authors/'%20.%20$id_or_email%20.%20'.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。