找到老外一个关于给评论框添加男女选项,并根据选项显示自定义的男女头像的文章,感觉挺有意思的,对于不想使用 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,且默认显示男性性别头像。