Домой WordPress WordPress: Проблемы и решения Вывод ошибки при неправильном radio во время регистрации
3ответ(ов) в теме
Tesessssss
не в сети 4 года
На сайте с 05.05.2014
Участник
Тем 5
Сообщения 12
1
11:32

Здравствуйте!
Помогите доделать код, проблема в том, что если в value ввести другое значение, через редактирование кода, то функция не добавит нужное значение в usermeta пользователя при регистрации и не выведет ошибки о том, что пользователь не выбрал нужный параметр.
Планировалось, что будут добросовестные пользователи и если при реге не выбирают этот параметр, то функция видит не заполненное поле и выводит свою вп ошибку, но введя левое значение в value, функция видит, что input не пустой, ошибку не выводит, позволяет создать пользователя, но не записывает в usermeta ключ color.

function register_form_more() {
	$color = ( ! empty( $_POST['color'] ) ) ? trim( $_POST['color'] ) : '';
	$color = get_the_author_meta('color',$user->ID );
?>
<div><input value="Black" name="color" type="radio" /> Black</div>
<div><input value="White" name="color" type="radio" /> White</div>
<?php
}
add_action( 'register_form', 'register_form_more' );

function register_form_plus_errors( $errors, $sanitized_user_login, $user_email ) {
	if ( empty( $_POST['color'] ) || ! empty( $_POST['color'] ) && trim( $_POST['color'] ) == '' ) {
		$errors->add( 'color_error', "Вы не указали цвет!" );
	}

	return $errors;
}
add_filter( 'registration_errors', 'register_form_plus_errors', 10, 3 );
// здесь проверяем, совпадают ли выбранный пункт, если нет, то не сохраняем в бд
function register_form_plus( $user_id ) {
	if ( ! empty( $_POST['color'] == 'Black')) {
		update_user_meta( $user_id, 'color', $_POST['color'] );
	} elseif ( ! empty( $_POST['color'] == 'White')) {
		update_user_meta( $user_id, 'color', $_POST['color'] );
	}
}
add_action( 'user_register', 'register_form_plus' );

Как сделать, чтобы ошибка выходила, если value не совпадают и не дать зарегистрироваться пользователю, пока он не укажет правильное значение?

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16860
2
11:45

просто укажите одно из значений заполненным по-умолчанию через checked и не придется делать этот велосипед

0
Tesessssss
не в сети 4 года
На сайте с 05.05.2014
Участник
Тем 5
Сообщения 12
3
12:54

Андрей CS сказал(а)
просто укажите одно из значений заполненным по-умолчанию через checked и не придется делать этот велосипед

не, все равно обходится. если значение есть другое, ошибка не выходит и регает

0
Вы не имеете права на публикацию сообщений в этой теме