Intereting Posts
Добавление / обновление переменных продуктов Включая функцию в тему Влияет ли тяжелая тема и плагины на время ответа сервера? Многопользовательская установка с Nginx и субдоменами не работает Открыть всплывающее окно «Вставить / изменить» загрузить определенный контент только на первой странице разбивки на страницы Могу ли я запустить add_action-hook внутри функции, которая получает данные через wp_ajax? Несколько плагинов, взаимодействующих с меню WP_Query Исключение страниц с порядком – 0 Как сделать так, чтобы новые сообщения в определенной категории попадали на определенную страницу? Создание постоянных номеров постоянных номеров Поиск фактических функций, добавленных в крючки и фильтры Принуждение всех сообщений, связанных с типом персонализированного сообщения, Удалите wp-admin из URL-адреса «Is_new_day ()» альтернатива в течение многих лет?

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

Я работал с некоторыми учебниками по созданию системы регистрации / входа в систему. В частности, эта ссылка – 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'); 

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