Задать вопрос
@80689248440

Почему не сохраняется поле фамилия?

Перестало сохраняться поле фамилия
add_action( 'user_register', 'user_registration_save', 10, 1 );
function user_registration_save( $user_id ) {

    //if ( isset( $_POST['last_name'] ) ) { // фамилия
        update_user_meta($user_id, 'billing_last_name', $_POST['last_name']);
        update_user_meta($user_id, 'last_name', $_POST['last_name']);       
	//}
     if ( isset( $_POST['first_name'] ) ) { // имя
        update_user_meta($user_id, 'billing_first_name', $_POST['first_name']);
        update_user_meta($user_id, 'first_name', $_POST['first_name']);
	}
     if ( isset( $_POST['billing_phone'] ) ) { // телефон
        update_user_meta($user_id, 'billing_phone', $_POST['billing_phone']);
	}    
     if ( isset( $_POST['email'] ) ) { // мейл       
        update_user_meta($user_id, 'user_email', $_POST['email']);
        update_user_meta($user_id, 'billing_email', $_POST['email']);
	}
	wp_update_user( array( 'ID' => $user_id, 'role' => 'Клиент' ) );	
}

сама форма
<form  method="post" action="<?php bloginfo('url'); ?>/my-account/" class="register">
	<input type="text" name="username" id="username" placeholder="Логин" value="" size="40" required>
	<?php if ( 'no' === get_option( 'woocommerce_registration_generate_password' ) ) : ?>
	<input type="password" name="password" id="reg_password" size="40" placeholder="Пароль" required>
	<?php endif; ?>
	<input type="email" name="email" id="email" value="" placeholder="eMail" size="40" required>
	<input type="text" name="last_name" id="last_name" value="" placeholder="Фамилия" size="40">
	<input type="text" name="first_name" id="first_name" value="" placeholder="Имя" size="40" required>
	<input type="text" name="billing_phone" id="billing_phone" value="" placeholder="Телефон" size="40" required>
	<?php wp_nonce_field( 'woocommerce-register' ); ?>			
	<input value="Зарегистрироваться" name="register" class="login-submit" type="submit">		
	</form>

Все поля кроме фамилии записываются нормально
Похожим кодом изменяю поля при редактировании профиля и там всё работает а тут внезапно не хочет.

Если сделать так
add_action( 'user_register', 'user_registration_save', 10, 1 );
function user_registration_save( $user_id ) {	
     if ( isset( $_POST['first_name'] ) ) { // имя
        update_user_meta($user_id, 'billing_first_name', $_POST['first_name']);
        update_user_meta($user_id, 'first_name', $_POST['first_name']);
	}
     if ( isset( $_POST['billing_phone'] ) ) { // телефон
        update_user_meta($user_id, 'billing_phone', $_POST['billing_phone']);
	}    
     if ( isset( $_POST['email'] ) ) { // мейл       
        update_user_meta($user_id, 'user_email', $_POST['email']);
        update_user_meta($user_id, 'billing_email', $_POST['email']);
	}
	wp_update_user( array( 'ID' => $user_id, 'role' => 'Клиент' ) );
	
	if ( isset( $_POST['first_name'] ) ) { // фамилия
        update_user_meta($user_id, 'billing_last_name', $_POST['last_name']);        
       return update_user_meta($user_id, 'last_name', $_POST['last_name']);              
	}
}

то есть при добавление в последнюю строку return то вроде как сохраняет но я не знаю что дальше делает вордпресс и по поэтому возможно какие-то данные не записываются?
  • Вопрос задан
  • 228 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Punkie
@Punkie
//if ( isset( $_POST['last_name'] ) ) { // фамилия

Я может чего-то не понимаю конечно, но у вас же эта строчка закомментирована...
Ответ написан
@80689248440 Автор вопроса
причем update_user_meta($user_id, 'billing_last_name', $_POST['last_name']); и
update_user_meta($user_id, 'last_name', $_POST['last_name']);
возвращают 1 и номер поля но похоже что они перезаписываются самим вукомерцем ещё раз
приоритет пробовал менять - не помогло
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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