Wordpress &引用;“登录”;在permalink中,重定向到wp-login.php wp3.6

Wordpress &引用;“登录”;在permalink中,重定向到wp-login.php wp3.6,wordpress,rewrite,Wordpress,Rewrite,我正在尝试为自定义用户页面创建自定义登录页面,但我无法让wordpress停止将单词login重定向到wp-login.php 设置非常简单,我添加了一个如下所示的规则account/login/?$生成index.php?account=login。我还为该自定义查询变量设置了重写标记。我还设置了一些其他规则,它们都可以正常工作 当我使用monkey man的重写分析器时,所有东西都指向正确的位置,但在前端,每当我在url中输入login时,它就会将我重定向到wp-login.php。输入到哪

我正在尝试为自定义用户页面创建自定义登录页面,但我无法让wordpress停止将单词login重定向到wp-login.php

设置非常简单,我添加了一个如下所示的规则
account/login/?$
生成
index.php?account=login
。我还为该自定义查询变量设置了重写标记。我还设置了一些其他规则,它们都可以正常工作

当我使用monkey man的重写分析器时,所有东西都指向正确的位置,但在前端,每当我在url中输入
login
时,它就会将我重定向到wp-login.php。输入到哪个段并不重要。所以
/login
/account/login
/dogs/bulldogs/login
。。。。全部重定向到wp-login.php

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

作为最后一条信息,我在wp 3.6中工作


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

我面临着完全相同的问题。谷歌帮不了我什么忙,所以我有必要深入研究。:)

在wp includes/template-loader.php文件的顶部,您可以找到以下代码片段:

if ( defined('WP_USE_THEMES') && WP_USE_THEMES )
    do_action('template_redirect');
如果您当时检查哪些函数连接到该操作,您将找到对wp\u redirect\u admin\u locations函数的引用(钩子和函数都在/wp includes/canonical.php文件中声明-第526行)

wp\u redirect\u admin\u 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中):

所以。。。*wp\u redirect\u admin\u locations*在尝试执行重定向后终止脚本,因此上述解决方案将不起作用

我现在看到的唯一另一个解决方案是绕过函数,这太糟糕了。该函数中定义的所有其他重定向将一起丢失

总之,我最终使用的是:

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

在Diogos great answer的基础上,您甚至可以禁用/login重定向,而不会丢失其他重定向。我刚刚在WPSE上发布了这个解决方案:

在搜索了几个小时如何禁用/admin重定向到wp admin之后,我终于找到了一些有效的方法。感谢@Diogo提供了一个干净、简单的解决方案。
    add_action(
          'init',
          function() {
              remove_action('template_redirect', 'wp_redirect_admin_locations', 1000);
          }
      );