Przekierowanie strony logowania/rejestracji WordPressa do niestandardowej strony logowania/rejestracji
Mam stronę internetową, z systemem użytkownika. Chcę zintegrować system użytkownika wordpress z tą stroną, ale nadal chcę korzystać ze stron rejestracji/logowania na stronie. Nie chcę, aby ktokolwiek mógł się zalogować lub zarejestrować za pomocą formularzy logowania lub rejestracji Wordpress. Zamiast tego, gdy próbują uzyskać dostęp do stron logowania/rejestracji w Wordpress, chcę, aby te strony przekierowały je na moje własne strony logowania/rejestracji.
Czy można to jakoś zrobić? Próbowałem Google, ale jedyne co udało mi się znaleźć to przekierowanie po zalogowaniu się użytkownika lub zarejestrowaniu, co nie jest tym, czego chcę.
Z góry dziękuję.
5 answers
W tym celu musisz przekierować stronę logowania/rejestracji na własne strony.
Zapisz ten kod w pliku functions.php
w aktywowanym folderze motywów. Podaj własną ścieżkę strony jako Argument.
add_action('init','possibly_redirect');
function possibly_redirect(){
global $pagenow;
if( 'wp-login.php' == $pagenow ) {
wp_redirect('http://google.com/');
exit();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 14:07:21
Aby ograniczyć bezpośredni dostęp tylko dla ' wp-login.php', bez żądania POST lub GET (przydatne dla niestandardowych formularzy logowania ajax), używam funkcji advanced:
function possibly_redirect(){
global $pagenow;
if( 'wp-login.php' == $pagenow ) {
if ( isset( $_POST['wp-submit'] ) || // in case of LOGIN
( isset($_GET['action']) && $_GET['action']=='logout') || // in case of LOGOUT
( isset($_GET['checkemail']) && $_GET['checkemail']=='confirm') || // in case of LOST PASSWORD
( isset($_GET['checkemail']) && $_GET['checkemail']=='registered') ) return; // in case of REGISTER
else wp_redirect( home_url() ); // or wp_redirect(home_url('/login'));
exit();
}
}
add_action('init','possibly_redirect');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-12 07:44:47
Prawidłowym działaniem Hooka jest login_init
który strzela tylko na wp-login.php
.
Tutaj nie jest wymagane ?action=action-name
, więc jest to główna Strona logowania:
add_action('login_init', function(){
if( !isset( $_GET['action'] ) ) {
wp_redirect( 'http://example.com' );
}
});
Dla wszystkich żądań możemy użyć określonego Hooka login_form_ACTION-NAME
, czyli, postpass
, logout
, lostpassword
, retrievepassword
, resetpass
, register
i login
. Przykład:
add_action('login_form_register', function(){
wp_redirect( site_url('custom-registration/') );
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-17 02:16:27
Jeśli korzystasz z niestandardowej strony logowania, ale nadal używasz wp_login_form (), pamiętaj, że formularz zostanie wysłany do wp-login.php, więc będziesz chciał sprawdzić, czy $_POST jest pusty przed przekierowaniem.
function prefix_wp_login_redirect() {
global $pagenow;
if( $pagenow == 'wp-login.php' && empty($_POST)) {
auth_redirect();
exit();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-24 22:25:06
Być może będziesz w stanie zatrzasnąć się na haku login_head
i wydać tam przekierowanie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-29 20:34:32