Как вывести пол пользователя в комментариях на сайте 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() и вставляем рядышком:
// Показывет пол пользователя
$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>';
}?>
Работа определения пола следующая.
Если комментарий оставил гость, то ничего не выводим, т.к. в этом случае пользователь нигде не указывает свой пол.
Если пользователь зарегистрирован, то у него есть возможность указать свой пол. И это значение теперь будет отображаться рядом с его комментарием.