Intereting Posts
Как изменить нежелательные дополнительные столбцы администратора? Резервное копирование базы данных и восстановление из резервной копии? Кэширование фрагментов увеличивает запросы к базе данных RecursiveDirectoryIterator не работает в admin Подключиться к основному запросу с фильтрами на основе настраиваемых полей Переопределение аргументов по умолчанию wp_nav_menu Расширенные пользовательские поля. Карта Google не будет отображаться, если не будет сброшена переменная. название фильтра из короткого кода Echo User Name от пользователя с большинством комментариев сегодняшнего дня? is_singular просто не будет работать Как использовать флажок и переключатель на странице параметров? Добавление кода Google Analytics в тег <head> определенных страниц Предварительное кэширование и робот Googlebot пользовательское изменение на первой странице WooCommerce – Показать заказы для определенного продукта?

Пользовательская регистрация переднего конца – как работает ключ в запросе набора пароля?

Я работал с некоторыми учебниками по созданию системы регистрации / входа в систему. В частности, эта ссылка – http://cubiq.org/front-end-user-registration-and-login-in-wordpress

Все работает очень хорошо, однако у меня проблема с набором паролей. В настоящее время при регистрации система использует собственный регистрационный код WordPress для отправки приветствия / создания пароля. При нажатии ссылки в электронном письме с ключом входа в систему GET выполняется следующая функция:

function custom_login_init () { $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login'; if ( isset( $_POST['wp-submit'] ) ) { $action = 'post-data'; } else if ( isset( $_GET['reauth'] ) ) { $action = 'reauth'; } else if ( isset($_GET['key']) ) { $action = 'resetpass-key'; } // redirect to change password form if ( $action == 'rp' || $action == 'resetpass' ) { wp_redirect( home_url('/member-login/?action=resetpass') ); exit; } // redirect from wrong key when resetting password if ( $action == 'lostpassword' && isset($_GET['error']) && ( $_GET['error'] == 'expiredkey' || $_GET['error'] == 'invalidkey' ) ) { wp_redirect( home_url( '/member-login/?action=forgot&success=wrongkey&error='.$_GET['error'] ) ); exit; } if ( $action == 'post-data' || // don't mess with POST requests $action == 'reauth' || // need to reauthorize $action == 'resetpass-key' || // password recovery $action == 'logout' // user is logging out ) { return; } wp_redirect( home_url( '/member-login/' ) ); exit; } add_action('login_init', 'custom_login_init'); 

Это позволяет выполнять процедуру сброса / установки пароля самостоятельно по большей части, за исключением того, что в конечном итоге он перенаправляет пользователя на форму «установить пароль», которая, как мне кажется, должна содержать скрытые поля с именем входа и ключом.

 <h1 class="entry-title">Set Your Password</h1> <p>Fill out the form below to set your password.</p> <form name="resetpasswordform" action="<?php echo site_url('wp-login.php?action=resetpass', 'login_post') ?>" method="post"> <input type="hidden" id="user_login" name="rp_login" value="<?php echo esc_attr( $_REQUEST['login'] ); ?>" autocomplete="off" /> <input type="hidden" name="rp_key" value="<?php echo esc_attr( $_REQUEST['key'] ); ?>" /> <p class="form-password"> <label for="pass1">New Password</label> <input class="text-input" name="pass1" type="password" id="pass1"> </p> <p class="form-password"> <label for="pass2">Confirm Password</label> <input class="text-input" name="pass2" type="password" id="pass2"> </p> <input type="hidden" name="redirect_to" value="/user/?action=resetpass&success=1"> <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" value="Get New Password" /></p> </form> 

Тем не менее, я не могу понять, где их получить для полей формы. Я не вижу, чтобы они были установлены в файл cookie, они не передаются через GET или POST в этот момент, они, кажется, строка запроса, как только мы перейдем к переадресации …

Я опубликовал это исчерпывающе вчера, и я не могу найти последнюю информацию о том, как это работает.

Может ли кто-нибудь пролить свет на то, как этот процесс должен работать? Вы видите что-то, что мне не хватает ни в функции, ни в форме?

Solutions Collecting From Web of "Пользовательская регистрация переднего конца – как работает ключ в запросе набора пароля?"

Поскольку я не мог найти ответ на это, я сам справился с этим, установив свой собственный файл cookie в функции и проверив это. Вот пересмотренная функция:

 function custom_login_init () { $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login'; if ( isset( $_POST['wp-submit'] ) ) { $action = 'post-data'; } else if ( isset( $_GET['reauth'] ) ) { $action = 'reauth'; } else if ( isset($_GET['key']) ) { $date_of_expiry = time() + 60 ; setcookie( "key", $_GET['key'], $date_of_expiry ); setcookie( "login", $_GET['login'], $date_of_expiry ); $action = 'resetpass-key'; } // redirect to change password form if ( $action == 'rp' || $action == 'resetpass' ) { wp_redirect( home_url('/member-login/?action=resetpass') ); exit; } // redirect from wrong key when resetting password if ( $action == 'lostpassword' && isset($_GET['error']) && ( $_GET['error'] == 'expiredkey' || $_GET['error'] == 'invalidkey' ) ) { wp_redirect( home_url( '/member-login/?action=forgot&success=wrongkey&error='.$_GET['error'] ) ); exit; } if ( $action == 'post-data' || // don't mess with POST requests $action == 'reauth' || // need to reauthorize $action == 'resetpass-key' || // password recovery $action == 'logout' // user is logging out ) { return; } wp_redirect( home_url( '/member-login/' ) ); exit; } add_action('login_init', 'custom_login_init'); 

Если у кого-то есть представление о том, как лучше это сделать, я все равно буду признателен.