Добавляю в стандартную форму регистрации wp-recall регистрацию по СМС.
1. в файл form-register.php добавил вывод строки ввода смс кода, после того, как будет заполнено поле "номер телефона":
<?php if ($_REQUEST['user_tel'] !=null) { echo
'<div class="form-block-rcl default-field"><input required type="number" placeholder="СМС код" value="" name="control_key" id="control_key"><span class="required">*</span></div>';} else {'';}; ?>
2. Далее в файл обработчик register.php добавил генерацию смс-кода, его отправку по СМС и проверку введённого кода пользователем:
//генерация смс кода
$number = '4';
$arr = array('0','1','2','3','4','5','6','7','8','9');
$pass2 = "";
for($i = 0; $i < $number; $i++)
{
$index = rand(0, count($arr) - 1);
$pass2 .= $arr[$index];
}
$pass3 = $pass2;
//** отправляем СМС **//
// получаем смс код, введённый пользователем
$control_key = $_POST['control_key'];
//сравниваем смс код от пользователя и сгенерированный
if($control_key != $pass3){
$wp_errors->add( 'rcl_register_empty', __('Введите код из СМС','wp-recall') );
return $wp_errors;
}
else if($control_key == $pass3) continue;
Проблема в том, что если пользователь код вводит неверно и жмёт кнопку "Зарегистрироваться" в форме регистрации, то идёт новая генерация кода. Необходимо же сгенерировать код только 1 раз (как это сделать?, пробовал ставить различный проверки на генерацию смс кода в зависимости от заполненности полей формы пользователем, так же пробовал код генерации с проверкой оборачивать в сессию - не помогло 🙁 ).
Кроме как записывать в БД сгенерированый код, и затем уже делать проверку у меня мысли нет. Может есть другое решение?