Как вывести пол пользователя в WordPress

Как вывести пол пользователя в комментариях на сайте WordPress.

Для начала нужно создать в профиле пользователя дополнительное поле для выбора пола. Для этого в файл functions.php добавим:

/* = Добавляем свои элементы в профиль пользователя
----------------------------------------- */

// Выбор пола пользователей
add_action( 'show_user_profile', 'show_extra_profile_fields' );
add_action( 'edit_user_profile', 'show_extra_profile_fields' );

function show_extra_profile_fields( $user ) {
    ?>
    <h3>Дополнительная информация</h3>
    <table class="form-table">
        <tr>
            <th>
                <label for="gender">Пол</label>
            </th>
            <td>
                <select name="gender" id="gender">
                    <option value="Мужской" <?php selected( 'Мужской', get_the_author_meta( 'gender', $user->ID ) ); ?>>Мужской</option>
                    <option value="Женский" <?php selected( 'Женский', get_the_author_meta( 'gender', $user->ID ) ); ?>>Женский</option>
                </select>
            </td>
        </tr>
    </table>
    <?php
}

add_action( 'personal_options_update', 'save_extra_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_profile_fields' );

function save_extra_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) )
        return false;
    update_usermeta( $user_id, 'gender', $_POST[ 'gender' ] );
}

После этого в профиле пользователя появится выбор пола:

Теперь надо вывести пол в комментариях пользователя, например, около его ника. Пол будет показан в виде иконки изображения, но можно и просто выводить надписью: мужской или женский.

Следующий php код нужно вставить в функцию вывода комментариев. Обычно такая функция описывается также в файле functions.php. В ней ищем что-то вроде get_comment_author_link() и вставляем рядышком:

<?php
// Показывет пол пользователя
$id = $comment->user_id;
$meta = get_the_author_meta('gender',$id);

$man = 'Мужской';
$woman = 'Женский';

$img_male = get_bloginfo('template_url') . '/assets/img/gender_man.png';
$img_woman = get_bloginfo('template_url') . '/assets/img/gender_woman.png';

// Если $meta содержит мужской пол и если id пользователя не равно 0 (гость),
// то выводим мужской пол
if ( ( $meta === $man ) && ($id != '0')) {
    echo '<span class="single-comment-gender">';
    echo '<img src="'.$img_male.'" title="Мужской пол" /></span>';
// иначе женский
} else if ($meta === $woman) {
    echo '<span class="single-comment-gender">';
    echo '<img src="'.$img_woman.'" title="Женский пол" /></span>';
}?>

Работа определения пола следующая.

Если комментарий оставил гость, то ничего не выводим, т.к. в этом случае пользователь нигде не указывает свой пол.

Если пользователь зарегистрирован, то у него есть возможность указать свой пол. И это значение теперь будет отображаться рядом с его комментарием.

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Как вывести пол пользователя в WordPress"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>