WordPress как на ладони
wordpress jino

Как можно расширить профиль пользователя?

Например: Мне нужно сделать чтобы пользователь мог зарегистрировать свою организацию. Есть поля "Полное наименование организации", "ИНН организации", "Телефоны". Эти данные нужно в дальнейшем выводить списком на странице, поэтому вариант с *_user_meta не правильный.

P.S. Большое спасибо за Ваш ресурс, очень помогает разбираться в WP!

stcoder 2.9 года назад

Разобрался. Опишу как делал (делал все таки через meta), может кому пригодиться.

В function.php нужно добавить

<?php

// добавляем поле в профиль пользователя
function init_organization_fields($user) {
echo '<label for="myinput">MY INPUT</label>';
echo '<input type="text" id="myinput" name="myinput" value="'. get_the_author_meta('my_input', $user->ID).'">';
}
add_action('show_user_profile', 'init_organization_fields');
add_action('edit_user_profile', 'init_organization_fields');

// сохраняем
function save_organization($uid) {
	if (!current_user_can('edit_user', $uid )) {
		return false;
	}

	foreach(array('myinput') as $field_name) {
		$val = sanitize_text_field($_POST[$field_name]);
		update_usermeta($uid, $field_name, $val);
	}
}
add_action('personal_options_update', 'save_organization');
add_action('edit_user_profile_update', 'save_organization');

// валидация полей
function validate_organization(&$errors, $update = null, &$user = null) {
	if (!isset($_POST['myinput']) || empty($_POST['myinput'])) {
		$errors->add('myinput', '<strong>Ошибка</strong>: поле MY INPUT обязательно для заполнения');
	}
}
add_action('user_profile_update_errors', 'validate_organization');
1
stcoder5 2.9 года назад

Нет ответов на этот вопрос.

На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.