我有一个带有用户系统的网站。我想将wordpress的用户系统集成到该网站中,但我仍然希望使用该网站的注册/登录页面。我不希望任何人能够使用Wordpress的登录或注册表登录或注册。相反,当他们尝试访问Wordpress中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面。
有没有办法做到这一点?我已经尝试了谷歌,但我找到的只是在用户登录或注册后重定向,这不是我想要的。
提前谢谢。
答案 0 :(得分:24)
为此,您需要将登录/注册页面重定向到您的自定义页面。
因此,请在您的functions.php
文件中将此代码写入您激活的主题文件夹下。将自定义页面路径作为参数传递。
add_action('init','possibly_redirect');
function possibly_redirect(){
global $pagenow;
if( 'wp-login.php' == $pagenow ) {
wp_redirect('http://google.com/');
exit();
}
}
答案 1 :(得分:17)
要限制仅针对'wp-login.php'的直接访问,没有POST或GET请求(对自定义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');
答案 2 :(得分:2)
如果您正在使用自定义登录页面,但仍使用wp_login_form(),请注意该表单将POST到wp-login.php,因此您需要在重定向之前检查$ _POST是否为空。
function prefix_wp_login_redirect() {
global $pagenow;
if( $pagenow == 'wp-login.php' && empty($_POST)) {
auth_redirect();
exit();
}
}
答案 3 :(得分:2)
正确的操作挂钩是 login_init
,只会在 wp-login.php
上触发。
此处,未请求?action=action-name
,因此它是主登录页面:
add_action('login_init', function(){
if( !isset( $_GET['action'] ) ) {
wp_redirect( 'http://example.com' );
}
});
对于所有请求,我们可以使用特定的挂钩login_form_ACTION-NAME
,即postpass
,logout
,lostpassword
,retrievepassword
,resetpass
,register
和login
。例如:
add_action('login_form_register', function(){
wp_redirect( site_url('custom-registration/') );
});
答案 4 :(得分:1)
您可以锁定login_head
挂钩并在那里发出重定向。