How IT

언제든지 물어보세요.

컨텐츠로 건너뛰기
  • 홈
  • Unix
  • Apple
  • Java
  • Android
  • C#
  • C++

로그인 후 사용자를 원래 URL로 리디렉션 하시겠습니까? 페이지에 액세스하려는 경우 사용자를 로그인 페이지 (홈)로

로그인하지 않고 다른 페이지에 액세스하려는 경우 사용자를 로그인 페이지 (홈)로 리디렉션하는 기능이 있습니다. 작동 방법은 다음과 같습니다.

function restrict_access_if_logged_out(){
    if (!is_user_logged_in() && !is_home()){
        wp_redirect( get_option('home') );
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

정말 간단하고 잘 작동하는 문제는 WordPress 백엔드가 작동하는 것처럼 로그인 한 후 이동하려는 URL로 리디렉션해야한다는 것입니다.

이것을 할 수있는 방법이 있습니까? 미리 감사드립니다!



답변

쉽게 할 수 있습니다. 리디렉션 매개 변수 만 지정하면됩니다. 홈페이지에서 로그인 링크를 사용하여 로그인 페이지로 이동하면 @sisir의 해결책이 맞습니다.

<?php echo wp_login_url( $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"] ); ?>

첫 페이지에서 사용자 정의 양식을 사용하는 경우의 내부 <form>에서 URL로 숨겨진 필드를 채워 리디렉션해야합니다.

<input type="hidden" name="redirect_to" value="<?php echo $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>" />

그리고 wp_login_form()양식을 생성하는 데 사용 하는 경우 매개 변수 -http : //codex.wordpress.org/Function_Reference/wp_login_form을 입력하십시오.

<?php
$args = array(
        'echo' => true,
        'redirect' => site_url( $_SERVER['REQUEST_URI'] ),
        'form_id' => 'loginform',
        'label_username' => __( 'Username' ),
        'label_password' => __( 'Password' ),
        'label_remember' => __( 'Remember Me' ),
        'label_log_in' => __( 'Log In' ),
        'id_username' => 'user_login',
        'id_password' => 'user_pass',
        'id_remember' => 'rememberme',
        'id_submit' => 'wp-submit',
        'remember' => true,
        'value_username' => NULL,
        'value_remember' => false );

wp_login_form( $args );
?>

필요에 따라 다른 매개 변수를 변경하십시오.


답변

인수 the_permalink()로 전달하십시오 $redirect.

function restrict_access_if_logged_out(){
    if (!is_user_logged_in() && !is_home()){
        wp_redirect( the_permalink() );
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

편집하다:

죄송합니다. 귀하의 질문을 원래 이해하지 못했습니다. 이 시도:

function restrict_access_if_logged_out(){
    if (!is_user_logged_in() && !is_home()){
        $redirect = home_url() . '/wp-login.php?redirect_to=' . urlencode( $_SERVER['REQUEST_URI'] );
        wp_redirect( $redirect );
        exit;
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

또한 참고 : wp_redirect()일반적으로 적절한 사용법을 추가하려면을 추가해야합니다 exit;.


답변

고마워, 나는 모든 사람들이 권장하는 약간의 비트를 사용했다.

function restrict_access_if_logged_out(){
    if (!is_user_logged_in() && !is_home()){
        wp_redirect( get_option('home') . '?redirect_to=' . esc_url($_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]) );
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

그리고 내 로그인 양식에서 (wp_login_form에 대해 알려 주신 @Ashfame 덕분에 내 응용 프로그램에서 로그인 양식을 하드 코딩하고 있습니다. 존재 여부는 알 수 없었습니다) 사용자 자격 증명이 양호하고 로그인 할 준비가되면 이것을 추가했습니다.

if (isset($_REQUEST['redirect_to'])){
    wp_redirect($_REQUEST['redirect_to']);
    // wp_redirect() does not exit automatically, and should almost always be followed by a call to exit;
    exit;

} else {
    wp_redirect(get_bloginfo('url') . '/groups/');
    exit;
}

도와 주셔서 감사합니다. 모두 투표했습니다!


답변

이것은 사람들을 사용하여 wp 로그인 페이지로 안내하는 코드입니다. 그런 다음 로그인하면 원래 위치로 돌아 왔습니다. 그러나 그것은 홈 페이지가 아니라 사용자 정의 로그인을 설정하는 워드 프레스 로그인 페이지입니다.

<?php echo wp_login_url( $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]) ?>

연구하고 싶을 수도 있습니다. 일반적으로 다음과 같은 방법으로 사용자의 현재 URL을 얻습니다.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]


답변

login_redirect필터 후크는 여기보다 완전하고 효과적인 솔루션입니다. 이 방법으로, 다른 레벨의 사용자에게 다른 경로 재 지정 경로를 제공하거나 로그인 할 때 오류가 발생할 경우 경로 재 지정 URL을 유지할 수 있습니다 (예 : 올바르지 않은 비밀번호).

function login_redirect( $redirect_to, $request, $user ){
  if(isset($_REQUEST['redirect_to'])){
    return $_REQUEST['redirect_to'];
  }
  return admin_url();
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );

function restrict_access_if_logged_out(){
  if (!is_user_logged_in() && !is_home()){
    $redirect = home_url() . '?redirect_to=' . esc_url($_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    wp_redirect( $redirect );
  }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );


답변

그것은 당신의 대답 중 어느 것도 효과가 없지만 약간만 추가하면 효과가 있습니다! 여기 내 코드 :

function login_redirect( $redirect_to, $request, $user ){
  if(isset($_REQUEST['redirect_to'])){
    return $_REQUEST['redirect_to'];
  }
  return admin_url();
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );

function restrict_access_if_logged_out(){
  if (!is_user_logged_in() && !is_home()){
    $redirect = home_url() . '/wp-login.php?redirect_to=' . esc_url($_SERVER["HTTP_HOST"] . urlencode($_SERVER["REQUEST_URI"]));
    wp_redirect( $redirect );
    exit;
  }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

내가 추가 한 것만 /wp-login.php@Matt의 응답과 비교하여 했지만 나에게는 열쇠가되었습니다. 희망이 도움이됩니다! 🙂

**편집하다:

HTTPS에서 탐색하기 위해 워드 프레스를 사용할 때 오류가 감지되었습니다. 리디렉션이 HTTP로되어 있으므로이 방법이 작동하지 않습니다. 문제를 해결하기 위해 기능을 변경했습니다. 결과는 다음과 같습니다.

function restrict_access_if_logged_out(){
  global $wp;
  $protocol='http';
  if (isset($_SERVER['HTTPS']))
    if (strtoupper($_SERVER['HTTPS'])=='ON')
      $protocol='https';
  if (!is_user_logged_in() && !is_home() && ($wp->query_vars['pagename'] != 'downloads') ){
    $redirect = home_url() . "/wp-login.php?redirect_to= $protocol://" . $_SERVER["HTTP_HOST"] . urlencode($_SERVER["REQUEST_URI"]);
    wp_redirect( $redirect );
    exit;
  }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

프로토콜을 확인한 다음 ‘ esc_url‘을 삭제 하고 올바른 프로토콜을 추가했습니다 $protocol://. 또한을 변경했습니다 "".

이 페이지를 기반으로 합니다 .


답변

나는 이것이 매우 늦다는 것을 알고 있지만, 미래의 사람들이 이것을 찾아서 필요로 할 때 이것을하는 방법에 대해 정확하게 글을 올렸습니다.

http://www.ryanprejean.com/force-login-with-redirect-and-exceptions/


이 글은 wordpress 카테고리에 분류되었고 login, redirect, urls 태그가 있으며 소장 마님에 의해 2024-12-31에 작성되었습니다.

글 네비게이션

← 모듈 라이센스는 어떻게합니까? 자신의 작업으로 코드를 복사 / 파이썬에서 지원되는 gdal 형식의 목록을 얻는 방법 행에서 다음을 사용하여 →

태그

  • android
  • apt
  • bash
  • boot
  • c#
  • c++
  • code-golf
  • command-line
  • debian
  • firefox
  • git
  • google-chrome
  • hard-drive
  • html
  • java
  • keyboard
  • linux
  • mac
  • macos
  • math
  • memory
  • microsoft-excel
  • mysql
  • networking
  • performance
  • permissions
  • python
  • r
  • regression
  • security
  • shell
  • sql-server
  • ssh
  • string
  • terminal
  • ubuntu
  • unity
  • usb
  • vim
  • virtualbox
  • windows
  • windows-7
  • windows-8
  • windows-10
  • windows-xp

최신 글

  • Windows에서 파티션 크기를 조정 한 후 APFS 파티션이 손실 됨 00 80
  • App Store에서 El Capitan을 강제로 다시 다운로드 하시겠습니까? 업데이트 된 플래시 드라이브 설치 프로그램을 빌드하기
  • 기존 시스템에 부팅 드라이브로 SSD 추가 백업에 큰 관심이 없습니다. 내가 걱정하는 것은이
  • geoJSON featureCollection에 properties 요소를 갖는 것이 유효합니까?
  • 추세를 식별하기 위해 신호 처리 원리를 신중하게 사용 매우 시끄러운 장기 데이터에서 추세를

카테고리

  • Android
  • Apple
  • C#
  • C++
  • cooking
  • cs
  • cstheory
  • diy
  • drupal
  • electronics
  • emacs
  • Gis
  • Git
  • Html
  • Java
  • Javascript
  • magento
  • photo
  • Python
  • raspberrypi
  • scicomp
  • Server
  • Software
  • Sql
  • stats
  • Superuser
  • ubuntu
  • Unix
  • vi
  • webapps
  • webmasters
  • wordpress
  • 게임개발
  • 코딩
Proudly powered by WordPress
Go to mobile version
Close