2012-08-17 4 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 & 로그인 당신이 생각하는 것 지금

실패 :

선호하는 URL을 www.site.com/?page_id=57?login=failed 나는 단지 '?' '&'. 이렇게하면 사용자가 홈 페이지에서 로그인하려고 할 때 문제가 발생합니다. 404라는 URL을 만듭니다. "요청한 URL/wordpress/& login = failed이 서버에서 찾을 수 없습니다."

기본 URL에서 작동하도록이 기능을 수정할 수있는 방법이 있습니까?

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

그렇지 않으면, 나는 전혀 그 URL로 작업하는 방법을 알아낼 수 없습니다 : 그건 내가 로그인이 같은 실패 여부의 값을 검색 할 수 있습니다. 감사합니다.

답변

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

아 덕분에 대해, 그 작품! :) –

+0

그냥 새로운 솔루션 wordpress는'add_query_arg()'에 URL에 변수를 추가하고 https://developer.wordpress.org/reference/functions/add_query_arg/에서'?'또는'&'를 처리합니다. –

관련 문제