Wordpress &引用;“登录”;在permalink中,重定向到wp-login.php wp3.6
我正在尝试为自定义用户页面创建自定义登录页面,但我无法让wordpress停止将单词login重定向到wp-login.php 设置非常简单,我添加了一个如下所示的规则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。输入到哪
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);
}
);