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ę.

Author: Bruno De Barros, 2009-12-29

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();
 }
}
 24
Author: nickohrn,
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');
 17
Author: Anatoly,
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/') );
});
 3
Author: brasofilo,
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();
  }
}
 2
Author: cee.e,
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.

 1
Author: ceejayoz,
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