将wp-login.php重定向到另一个页面

时间:2014-01-07 作者:4m1nh4j1

我想重定向此页面wp-login.php/login 页所以当用户点击这样的链接时<a href="/wp-login.php">login</a>, wordpress会将他重定向到/register .

我找到并修改了此函数:

add_action(\'init\',\'custom_login\');

function custom_login(){
 global $pagenow;
 if (( \'wp-login.php\' == $pagenow ) && (!is_user_logged_in())) {
  wp_redirect(\'/login\');
  exit();
 }
我不擅长wordpress编码。

重定向工作正常,但身份验证似乎被破坏。当我输入登录/通行证时,相同的页面(/login) 未经身份验证就重新加载。

有没有关于修复重定向功能的建议?

4 个回复
SO网友:thirdender

如果您只关心页面上显示的登录链接,那么您应该能够通过挂接login_url 滤器这不会重定向键入http://MYSITE/wp-login.php 直接进入他们的浏览器,但这会影响整个网站显示的登录链接。

这是来自login_url Codex page:

add_filter( \'login_url\', \'my_login_page\', 10, 2 );
function my_login_page( $login_url, $redirect ) {
  return home_url( \'/my-login-page/?redirect_to=\' . $redirect );
}

SO网友:SoftProdigy

1. Modify your .htaccess file – add this line after index.php rewrite rule:

RewriteRule ^index\\.php$ – [L]<br />
RewriteRule ^yoursecretpath$ wp-login.php [L,NC,QSA]
在哪里yoursecretpath 是管理面板的路径。

2. Modify login_header function in wp-login.php file – add this code just before line 59 (where HTML doc type tag starts, so to prevent headers sending error):

<?php $uri = $_SERVER[\'REQUEST_URI\']; if(stripos($uri, ‘wp-login’) or stripos($uri, ‘wp-admin’) && !stripos($GLOBALS["HTTP_COOKIE"], ‘wordpress_logged_in’)) {  header("Location: ".get_site_url().\'/yoursecretpath\' ); exit(); } ?>

SO网友:sMyles

实际上,我已经有了一个开源插件,可以做到这一点:

https://github.com/tripflex/wp-login-flow

创建它是为了要求用户验证他们的电子邮件,但您可以禁用该功能,只需使用最新版本的WordPress repo(1.0.0)中的重写功能即可。

您可以查看代码以了解我如何处理重写:

https://github.com/tripflex/wp-login-flow/blob/master/classes/rewrite.php#L312

实际上,我现在正在做一些主要的更新和补丁,但目前1.0.0对于重写来说非常好。享受:)

SO网友:bueltge

如果您要在您的地址上创建自定义登录页/login, 然后创建一个重写:

function restrict_admin() {

    if ( ! current_user_can( \'manage_options\' ) && \'/wp-admin/admin-ajax.php\' != $_SERVER[\'PHP_SELF\'] ) {
                wp_redirect( site_url() );
    }
}
add_action( \'admin_init\', \'restrict_admin\', 1 );
此代码将检查用户是否是管理员,如果不是管理员,WordPress会将其重定向回网站主页。

为自定义登录创建一个侧模板,并在模板中使用WordPress的登录默认值:

$args = array( \'redirect\' => site_url( $_SERVER[\'REQUEST_URI\'] ) );
wp_login_form( $args );
您还可以更改登录页面的重定向地址。但同样有用的是,您可以检查登录错误,也可以在登录失败后添加正确重定向的代码。对于此作业,请使用挂钩wp_login_failedauthenticate.

结束

相关推荐

无法使用BAW登录注销插件添加‘LoginLogout’链接

我安装并激活了“BAW登录/注销”插件,在屏幕上显示登录或注销链接。但这对我不起作用。有人能帮我吗我遵循的步骤是:1)安装并激活“BAW Login/logout”插件2)在菜单面板中,我选择“Login/logout”值并单击“Add to Menu”(添加到菜单)3)将“Login/logout”(登录/注销)选项添加到菜单结构中4)我保存了菜单5)我刷新了网站。但找不到“Login”或“Logout”链接