2012-08-17 118 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