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

Admin PHP, 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"