“登录”的永久重定向到WP-login.php中wp3.6(“login” in permalink

2019-10-18 12:24发布

我试图创建一个自定义用户页面自定义登录页面,但我不能让WordPress的停止重定向词登录WP-login.php中。

安装非常简单,我添加一条规则看起来像这样。 account/login/?$是收益率index.php?account=login 。 我还设置我重写标签为自定义查询变种。 我有一对夫妇的其他规则的设置和他们都正常工作。

当我正确使用猴人的重写分析点应有尽有,但在前端任何时候我进入login到URL重定向我WP-login.php中。 不要紧,什么段它在进入。 所以/login/account/login/dogs/bulldogs/login ....所有重定向到WP-的login.php

据我可以告诉有没有包含任何其他重写规则login 。 所以我不知所措。

作为最后一块信息,我在WP 3.6工作

任何建议或想法,将不胜感激。

Answer 1:

我面对完全一样的问题。 谷歌是不是非常有帮助,所以我有必要在挖。:)

对上的顶部WP-包括/模板loader.php文件,你会发现这个代码小片段:

if ( defined('WP_USE_THEMES') && WP_USE_THEMES )
    do_action('template_redirect');

如果你检查什么功能迷上了当时那个动作,你会发现到wp_redirect_admin_locations功能(包括钩子和功能都宣布对/wp-includes/canonical.php文件-线526)的参考。

wp_redirect_admin_locations功能,你会发现这一点:

 $logins = array(
      home_url( 'wp-login.php', 'relative' ),
      home_url( 'login', 'relative' ),
      site_url( 'login', 'relative' ),
  );
 if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
      wp_redirect( site_url( 'wp-login.php', 'login' ) );
      exit;
  }

对这个问题的简单的解决方案,将是你的钩到* wp_redirect *过滤器的功能。 像这样的东西(你的functions.php中):

add_filter('wp_redirect', 'yourprefix_filter_login_redirect', 10, 2);
function yourprefix_filter_login_redirect($location, $status)
{
     $uri = trim($_SERVER['REQUEST_URI'], '/');

      if ($uri === 'login') {
          return false;
      }

      return $location;
}

所以...的* wp_redirect_admin_locations *试图瓶坯重定向后终止脚本,所以上述解决方案将无法工作。

我看到现在唯一的其他的解决办法是绕过功能一起哪一种吮吸。 所有这些函数中定义的其他重定向,将丢失所有一起...

不管怎么说,我已经结束了使用:

    add_action(
          'init',
          function() {
              remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
          }
      );


Answer 2:

在Diogos伟大的回答之上建立,你甚至可以禁用不失其他的重定向/登录重定向。 我刚刚张贴在WPSE此解决方案: 禁用“/登录”重定向



文章来源: “login” in permalink redirects to wp-login.php wp3.6