@ligisayan

Как вывести из профиля пользователя wordpress дополнительные поля?

Приветствую. Есть сайт на wordpress в котором в профиле пользователя через файл functions.php добавил возможность выбора пола пользователя:
/* 	Add gender in user profile
/* --------------------------------------------------------------------- */
function show_profile_fields( $user ) { ?> 
	<h3>Дополнительная информация</h3>
	<!-- добавляется ещё один блок в профиле, в примере он будет называться "Дополнительная информация" -->
	<table class="form-table">
	<!-- для того чтобы ваши поля выглядели так же, как и стандартные в Wordpress, прописывайте такие же классы как и тут -->
	<!-- добавляем поле пол -->
	<th><label for="gender">Пол</label></th>
	<td><?php $gender = get_the_author_meta('gender',$user->ID ); ?>
		<ul>
			<li><input value="мужской" name="gender"<?php if ($gender == 'мужской') { ?> checked="checked"<?php } ?> type="radio" /> мужской</li>
			<li><input value="женский"  name="gender"<?php if ($gender == 'женский') { ?> checked="checked"<?php } ?> type="radio" /> женский</li>
		</ul>			
	</td></tr>
	<!-- закрываем теги и применяем функцию -->
	</table>
<?php }
add_action( 'show_user_profile', 'show_profile_fields' );
add_action( 'edit_user_profile', 'show_profile_fields' );

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

А как теперь его можно вывести на странице (к примеру регистрации) ? вот так, например, не удается.. (причем опцию выбрал)
global $current_user;
get_currentuserinfo();
var_dump($current_user->gender);
  • Вопрос задан
  • 1009 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Дополнительные данные ваши хранятся в таблице wp_usermeta.
Функция get_currentuserinfo() получает только данные из таблицы wp_users.
В вашем случае:
global $current_user;
get_currentuserinfo();
$gender = get_user_meta( $user_ID, 'gender', true );
var_dump( $gender );
// Либо можно получить все метаданные юзера массивом, и работать уже с ними:
$meta = get_user_meta( $user_ID );
var_dump( $meta );
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы