Как перенаправить все запросы к wp-login.php?

Я создал некоторые пользовательские шаблонные страницы входа в систему/регистрации, и теперь я хочу, чтобы тот каждый запрос к wp-login.php был перенаправлен к пользовательскому URL. Теперь у меня есть что-то вроде этого:

add_action('init','possibly_redirect');
 function possibly_redirect(){
global $pagenow;
if( '/wp-login.php' == $pagenow ) {
wp_redirect('/login');
exit();
}
}

но это не работает правильно, потому что, когда я нажимаю на ссылку выхода из системы (в meta виджете) она перенаправит меня к ссылке входа в систему / и не выполнению выхода из системы. У Вас есть другой метод, чтобы сделать это в сейфе или лучшем пути?Спасибо.

2
02.04.2012, 14:48
4 ответа

На самом деле я нашел правильный способ сделать это.

Для перенаправления вход в систему Wordpress пользовательского URL:

function redirect_login()
{
wp_redirect( home_url( '/login' ) );
exit(); 
}
add_action( 'login_form_login', 'redirect_login' );

Для перенаправления регистрация Wordpress к пользовательскому URL:

 function redirect_register()
{
wp_redirect( home_url( '/registration' ) );
exit(); 
}
add_action( 'login_form_register', 'redirect_register' );

Я думаю, что код очень прост понять, в основном Вы добавляете рычаги для входа в систему и регистрируете URL и затем используете wp-перенаправление для перенаправления к пользовательскому URL. Все запросы к wp-login.php и wp-login.php? action=register будет перенаправлен к пользовательскому URL, который Вы устанавливаете.

3
19.02.2020, 22:23

Чтобы ограничить прямой доступ только для 'wp-login.php', без POST или ПОЛУЧИТЬ запрос (полезный для пользовательского ajax входят в формы), я использую усовершенствованную функцию:

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');
6
19.02.2020, 22:23

Я рекомендовал бы ответ John's, имея exit() опущенный. Так, код, который полностью функционален в моем случае:

function redirect_login() {
    wp_redirect( home_url( '/login' ) ); 
}
add_action( 'login_form_login', 'redirect_login' );

Кажется что exit() лишает возможности пользователя входить в систему.

1
19.02.2020, 22:23

Две вещи отметить в ссылке на функцию WP для wp_redirect()...

  1. exit; действительно часть использования, и
  2. $location параметром должен быть "Абсолютный URI", один включая протокол (http://) Пример Абсолютного/Полного URI: http://www.example.com/blog/images/icecream.jpg
0
19.02.2020, 22:23

Теги

Похожие вопросы