Getting commenter meta

As per the comments above, you can’t have this functionality directly. So we need to add this functionality as per the steps given below.

  1. Add the gender field in the comment form.
  2. Save the gender as meta data of that comment.
  3. Change the get avatar functionality of the comment to pass the default url as per gender.

Let’s add the gender field first

// 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">' . __( 'Gender' ) . '</label>'.
            '<input id="gender_male" name="gender" type="radio" value="male" checked="checked" /> ' . __( 'Male' ) .
            '<input id="gender_female" name="gender" type="radio" value="female" />' . __( 'Female' ) .
        '</p>';
}

Let’s save the gender value as comment meta data

// 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 );
}

Modify the get avatar functionality to use default image url

// 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;
}

Few things to note:
– Gender is set to male as default.
– You need to replace the default_female_avatar_url and
default_male_avatar_url values with yours.

error code: 523