Intereting Posts
Как я могу найти единый шаблон сообщения форума buddypress? Вход в виджет плагина не допускает пробелов Почему я не могу использовать константу класса как текстовый домен? Получение index.php вместо single.php для отображения сообщений Как центрировать oEmbedded контент Возможности не меняются Пользовательские сообщения WordPress и постоянные ссылки Как я могу запустить этот код один раз, чтобы мой опубликованный заголовок не изменялся при публикации / обновлении? Как перенаправить выведенных пользователей на определенную страницу? Применение моих собственных классов css в wp_menus 3? URL-адрес, возвращающий 404 для определенной страницы WordPress показывает мою фотографию в панели администратора Разделить тестирование с помощью кэша W3? Локальная разработка WordPress с докерером-сочинением внезапно нарушена? Использовать Ajax для фильтрации сообщений?

Перенаправление пользователя при входе в систему с использованием дополнительного значения поля в форме входа

Я добавил поле в мою регистрационную форму с помощью действия action_form, как показано ниже.

add_action('login_form','select_contest_field'); function select_contest_field(){ //Output your HTML ?> <p class="tml-user-pass-wrap"> <label for="contest">Select Contest</label> <select class="form-control input-lg" id="contest" name="contest" required> <option value="uppa" >UPPA 2017</option> <option value="ypa">Young Photographer Award</option> </select> </p> <?php } 

У меня есть фильтр login_redirect для перенаправления пользователей при входе в систему в зависимости от определенных условий и выбранного им варианта.

 function my_login_redirect( $redirect_to, $request, $user ) { //set variables global $wpdb; $contests_table = $wpdb->prefix.'photocontests'; $user_meta_table = $wpdb->prefix.'usermeta'; $site_url = get_site_url(); $my_info_url = $site_url.'/my-information/'; if (isset($_POST['contest']) && $_POST['contest'] = "ypa"){ $contest_page = $site_url.'/young-photographers-award-2017/young-photographers-award-2017-upload-submit/'; } if (isset($_POST['contest']) && $_POST['contest'] = "uppa") { $contest_page = $site_url.'/uganda-press-photo-award-2017/uganda-press-photo-award-2017-upload-submit/'; } global $current_user; get_currentuserinfo(); $userID = $user->ID; $user_info_updated = $wpdb->get_var($wpdb->prepare("SELECT meta_value FROM $user_meta_table WHERE user_id = %d AND meta_key = 'userinfo_updated' ", $userID) ); //check if user has updated information //is there a user to check? if ( isset( $user->roles ) && is_array( $user->roles ) ) { //check for admins if ( in_array( 'administrator', $user->roles ) ) { // redirect them to the default place return $redirect_to; } else { if ($user_info_updated != 1){ return $my_info_url; } else { return $contest_page; } } } else { return $my_info_url; } } add_filter( 'login_redirect', 'my_login_redirect', 10, 3 ); 

Когда пользователь входит в систему и выбирает опцию в форме входа в систему, они всегда перенаправляются на второй вариант $ contest_page независимо от того, какой вариант выбран, в этом случае,

 if (isset($_POST['contest']) && $_POST['contest'] = "uppa") { $contest_page = $site_url.'/uganda-press-photo-award-2017/uganda-press-photo-award-2017-upload-submit/'; 

}

Как я могу убедиться, что выбрано правильное значение для $ contest_page? Правильно ли входит форма входа в выбранный параметр? В принципе, кто-то мне помогает!

Проблема в том, что у вас есть ошибка в вашей логике IF, она должна иметь два ==, а не один. Как бы то ни было, первый IF дает значение ypa вместо $ _POST ['contest'] вместо сравнения.

Блок IF должен быть:

 if (isset($_POST['contest']) && "ypa" == $_POST['contest']){ $contest_page = $site_url.'/young-photographers-award-2017/young-photographers-award-2017-upload-submit/'; } if (isset($_POST['contest']) && "uppa" == $_POST['contest']) { $contest_page = $site_url.'/uganda-press-photo-award-2017/uganda-press-photo-award-2017-upload-submit/'; } 

Я также меняю порядок параметров, потому что эта ошибка часто случается с программистами и делает условия в обратном порядке, если вы пишете только одно = по ошибке возникает синтаксическая ошибка, и она не компилируется: условия йоги