2012-08-17 85 views
0

我使用以下功能在失败的登录尝试后重定向用户。在functions.php中,我说:登录后重定向,Wordpress URL

add_action('wp_login_failed', 'inline_login_fail'); 

function inline_login_fail($username) { 
    $referrer = $_SERVER['HTTP_REFERER']; 
    if (!empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin')) { 
     if (!strstr($referrer,'?login=failed')) { // don’t append twice 
     wp_redirect($referrer . '?login=failed'); 
     } else { 
     wp_redirect($referrer); 
     } 
    exit; 
    } 
} 

这工作,但问题是我无法弄清楚如何解析“登录失败的?”。当我问这是一个PHP问题时,他们说这个URL格式不正确。

我的URL:www.site.com/?page_id=57?login=failed

首选网址:www.site.com/?page_id=57 &登录=无法

现在你会觉得我可以改变'?'到'&'。当我这样做时,如果用户尝试从主页登录并失败,则会产生问题。它创建一个URL为404:“在此服务器上未找到请求的URL/wordpress/& login =失败。”

有什么方法可以纠正这个功能,所以它可以与首选的URL一起工作吗?这让我可以检索的登录是否已经失败,这样的价值:

<?php 
if(isset($_GET['login']) === true and $_GET['login'] === 'failed') 
{ 
    get_template_part('login', 'failed'); 
} else { 
    get_template_part('login', 'form'); 
} 
?> 

否则,我无法弄清楚如何使用该网址在所有的工作。 谢谢!

回答

1

支票?

<?php 
    function inline_login_fail($username) { 
     $referrer = $_SERVER['HTTP_REFERER']; 
     if (!empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin')) { 
      if (!strstr($referrer,'login=failed')) { // don’t append twice 
       if(!strstr($referrer, '?')){ 
        wp_redirect($referrer . '?login=failed'); 
       } else { 
        wp_redirect($referrer . '&login=failed'); 
       } 
      } else { 
       wp_redirect($referrer); 
      } 
     exit; 
     } 
    } 
?> 
+0

啊,谢谢,那作品! :) – 2012-08-17 07:16:20

+0

只是一个新的解决方案WordPress的'add_query_arg()'附加变量到任何网址,并照顾'?'或'&'在他们https://developer.wordpress.org/reference/functions/add_query_arg/ – 2015-04-21 08:24:17