问题描述
我用一个 WP 黑客来显示作者的照片。例如,我的 single.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']);
withadd_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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。