找到老外一个关于给评论框添加男女选项,并根据选项显示自定义的男女头像的文章,感觉挺有意思的,对于不想使用 gavatar 又不想搞复杂用户系统上传头像的童鞋,可以试试。
首先,通过函数在 comment form 里插入男、女选项
// Add the actions to show gender field on comment form
add_action( 'comment_form_logged_in_after', 'wti_additional_comment_field' );
add_action( 'comment_form_after_fields', 'wti_additional_comment_field' );
function wti_additional_comment_field() {
echo '<p class="comment-form-gender">'. '<label for="gender_male">性别 </label>'.
'<input id="gender_male" name="gender" type="radio" value="male" checked="checked" /> 男'.
'<input id="gender_female" name="gender" type="radio" value="female" /> 女</p>';
}
然后,提交评论的时候将性别数据保存到 comment_id 对应的 comment_meta 里
// Add the action to save the gender in comment
add_action( 'comment_post', 'wti_save_comment_meta_data' );
function wti_save_comment_meta_data( $comment_id ) {
$gender = wp_filter_nohtml_kses( $_POST['gender'] );
add_comment_meta( $comment_id, 'gender', $gender );
}
最后,让默认头像函数显示男、女不同性别的头像
// Add the filter to have custom avatar
add_filter('get_avatar', 'wti_custom_avatar', 10, 5);
function wti_custom_avatar($avatar, $id_or_email, $size, $default, $alt) {
global $comment;
if ( is_object ( $comment ) && !empty ( $comment ) ) {
// Remove to avoid recursion
remove_filter( 'get_avatar', 'wti_custom_avatar' );
// Get the comment id and gender for that comment
$comment_id = get_comment_ID();
$gender = get_comment_meta( $comment_id, 'gender', true );
// Assign the image url as per gender
if ( $gender == 'female' ) {
$default = 'default_female_avatar_url';
} else {
$default = 'default_male_avatar_url';
}
// Get the avatar with default url
$avatar = get_avatar( $comment, $size, $default );
// Add the filter again
add_filter( 'get_avatar', 'wti_custom_avatar', 10, 5 );
}
return $avatar;
}
上面函数里,需要自己将默认的男、女头像地址替换对应的 default_female_avatar_url 和 default_male_avatar_url,且默认显示男性性别头像。

