如何为WordPress添加一个自定义Avatars头像

Ourboke
Ourboke
Ourboke
6823
文章
148
评论
2021年10月19日00:08:55

让WordPress注册用户到另外的Gravatar头像网站申请上传头像,并不符合常规习惯,因此在自己网站添加上传自定义头像功能还是很有必要。

如何为WordPress添加一个自定义Avatars头像功能

如何为WordPress添加一个自定义Avatars头像功能

因为在此之前不知是国内防火墙的问题,还是国内服务器无法访问问题,使得Gravatar头像失效使得很多用户失望,虽然在此之前有讲到过用WP-China-Yes插件立马解决Gravatar头像问题,但还是有不少人不喜欢用插件。

今天,在这里分享一个极为简单的自定义Avatars头像功能,将以下代码添加到WP主题函数模板下的functions文件中:

在用户资料页面添加自定义Avatar字段

    function be_custom_avatar_field( $user ) { ?>
    	<h2>自定义头像</h2>
    	<table class="form-table" role="presentation">
    		<tbody>
    		<tr class="be_custom_avatar">
    			<th><label for="be_custom_avatar">头像图片链接: </label></th>
    			<td>
    				<input type="text" name="be_custom_avatar" id="be_custom_avatar" class="regular-text ltr" value="<?php echo esc_url_raw( get_the_author_meta( 'be_custom_avatar', $user->ID ) ); ?>" />
    				<p class="description" id="be_custom_avatar-description">输入头像的图片链接,图片尺寸 70x70 像素。</p>
    			</td>
    		</tr>
    		</tbody>
    	</table>
    	<?php 
    }
     
    add_action( 'show_user_profile', 'be_custom_avatar_field' );
    add_action( 'edit_user_profile', 'be_custom_avatar_field' );
     
    function be_save_custom_avatar_field( $user_id ) {
    	if ( current_user_can( 'edit_user', $user_id ) ) {
    		update_usermeta( $user_id, 'be_custom_avatar', esc_url_raw( $_POST['be_custom_avatar'] ) );
    	}
    }
    add_action( 'personal_options_update', 'be_save_custom_avatar_field' );
    add_action( 'edit_user_profile_update', 'be_save_custom_avatar_field' );

二、通过add_filter过滤器,显示自定义头像

    function be_gravatar_filter($avatar, $id_or_email, $size, $default, $alt) {
    	$email = is_object( $id_or_email ) ? $id_or_email->comment_author_email : $id_or_email;
    	if( is_email( $email ) && ! email_exists( $email ) )
    		return $avatar;
    	$custom_avatar = get_the_author_meta('be_custom_avatar');
    	if ($custom_avatar) 
    		$return = '<img src="'.$custom_avatar.'" width="'.$size.'" height="'.$size.'" alt="'.$alt.'" />';
    	elseif ($avatar) 
    		$return = $avatar;
    	else 
    		$return = '<img src="'.$default.'" width="'.$size.'" height="'.$size.'" alt="'.$alt.'" />';
    	return $return;
    }
    add_filter('get_avatar', 'be_gravatar_filter', 10, 5);

上面的代码与插件相比,功能比较简单,并没有图片上传功能,只能通过输入图片地址实现自定义头像。

不过,如果是对于要求不算太高的大多数用户来说,这点头像功能是已经很完美的了,喜欢的朋友赶紧收藏吧!

WordPress主题回复邮件通知功能失效修复方法 WordPress

WordPress主题回复邮件通知功能失效修复方法

有些人使用WordPress主题的最新版本,感觉主题变化挺大的。但!自从更新主题后,也有不少网友发现“回复邮件通知”功能是不是失效了?这才意识到此问题的重要性,发现了问题后,很多博主给出的修改意见,现...
WordPress页面链接怎样添加固定的父级目录? WordPress

WordPress页面链接怎样添加固定的父级目录?

WordPress分类可以设置父子分类并在链接中显示等级,相同的网页也能够选择父网页产生层次结构,假如,仅仅只是想简单地在网页链接加中加一个固定的父级目录。同时添加伪静态后缀.html,那么可以参考之...