programing

WordPress 로그인 후 리다이렉트

kakaobank 2023. 3. 8. 21:31
반응형

WordPress 로그인 후 리다이렉트

기존 사이트를 기반으로 맞춤형 WordPress 테마를 만들고 있습니다.

작성한 대체 대시보드를 사용하고 싶습니다.

'에게 '사용할 수 있습니다.'로 할 수 있을까요?news.php 후 " " "가 아닌 "가 로그인 후"/wp-admin/ '?

--

편집: 이 플러그인은 정상적으로 동작하고 있습니다만, 서드파티제 플러그인을 사용하는 경우보다 안전하기 때문에 functions.php를 통해 수동으로 작업을 수행할 수 있는 방법을 찾을 수 있는 사용자에게는 현상금이 제공됩니다.

이것으로 당신의 문제가 해결될 것입니다.여기서 찾은 답변에서 각색한 것입니다.

다음 코드 조각을 함수에 추가합니다.주제 php 파일:

function admin_default_page() {
  return '/new-dashboard-url';
}

add_filter('login_redirect', 'admin_default_page');

인정된 답은 매우 틀렸다.WordPress Core를 수정해서는 안 됩니다.특정 업데이트 시 편집 내용이 손실될 뿐만 아니라 임의로 변경한 내용이 다른 기능을 손상시키거나 사이트의 보안까지 위협할 수 있습니다.

코어에는 액션 훅과 필터가 포함되어 있어 코드를 변경하지 않고 기능을 변경할 수 있습니다.

필터를 사용하여 특정 사용자를 리디렉션하는 예는 여기에서 찾을 수 있으며 훨씬 강력한 문제 해결 방법입니다.

특정 문제에 대해서는, 다음의 조작을 실시합니다.

function login_redirect( $redirect_to, $request, $user ){
    return home_url('news.php');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );

커스터마이즈된 링크를 다음과 같이 사용할 수도 있습니다.

https://example.com/wp-login.php?redirect_to=https://example.com/news.php

이게 도움이 될지도 몰라.Peter 로그인 리다이렉트

로그인 및 로그아웃 후 사용자를 다른 위치로 리디렉션합니다.

특정 사용자, 특정 역할을 가진 사용자, 특정 기능을 가진 사용자 및 기타 모든 사용자에 대한 포괄적인 규칙 집합을 정의합니다.또, 포스트 등록용의 리다이렉트 URL 를 설정합니다.이것은 모두 [설정(Settings)]> [로그인/로그아웃(Login/Logout)]리다이렉트로 관리됩니다.

구문을 할 수 .[variable]username[/variable]로그인 시 시스템이 동적 URL을 작성하고 해당 텍스트를 사용자의 사용자 이름으로 대체합니다."userslug", "homeurl", "siteurl", "postid-23", "http_referer"는 URL "variables"입니다.

add_action('wp_head','redirect_admin');
function redirect_admin(){
  if(is_admin()){
    wp_redirect(WP_HOME.'/news.php');
    die; // You have to die here
  }
}

또는 다른 사용자만 리디렉션하는 경우:

add_action('wp_head','redirect_admin');
function redirect_admin(){
  if(is_admin()&&!current_user_can('level_10')){
    wp_redirect(WP_HOME.'/news.php');
    die; // You have to die here
  }
}

php 5.3+ 를 사용하고 있는 경우는, 다음과 같은 익명 함수를 사용할 수 있습니다.

add_filter( 'login_redirect', function() { return site_url('news'); } );

테마로그인 플러그인은 도움이 될 수 있습니다.이 플러그인을 사용하면 특정 역할의 사용자를 특정 페이지로 리디렉션할 수 있습니다.

WordPress의 리다이렉트에서는 동작합니다.

add_filter('woocommerce_login_redirect', 'wc_login_redirect'); 

function wc_login_redirect( $redirect_to ) {

   $redirect_to = 'PUT HERE URL OF THE PAGE';
   return $redirect_to;

}

받아들여진 대답은 분명 좋은 답이 아니야!잠시 동안 문제가 해결되겠지만 다음에 WordPress 설치를 업데이트하면 어떻게 됩니까?코어 파일이 덮어쓰기되어 모든 수정 내용이 손실될 수 있습니다.

다른 사람들이 이미 언급했듯이(Dan과 Travis가 대답) 정답은 필터를 사용하는 것입니다.

WooCommerce의 경우: 로그인/로그아웃 리다이렉트 - 2021년에 기능

add_filter('woocommerce_login_redirect', 'login_redirect');

function login_redirect($redirect_to) {

    return home_url();

}

add_action('wp_logout','logout_redirect');

function logout_redirect(){

    wp_redirect( home_url() );
    
    exit;

}
// add the code to your theme function.php
//for logout redirection
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
//for login redirection
add_action('wp_login','auto_redirect_after_login');
function auto_redirect_after_login(){
wp_redirect( home_url() );
exit();
`enter code here`}

다음은 사용자 역할에 따라 사용자를 리디렉션하는 코드 조각입니다.

add_filter( 'login_redirect', 'kp_login_redirect', 10, 3 );

function kp_login_redirect( $redirect_to, $request, $user ) {
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'subscriber', $user->roles )) {
             $redirect_to = home_url("dashboard");
        }
    }
    return $redirect_to;
}

네트워크 사이트(멀티 컴포넌트)를 사용하고 있는 경우는, 다음의 조작을 실시합니다.

add_filter( 'login_redirect', 'kp_login_redirect', 10, 3 );

function kp_login_redirect( $redirect_to, $request, $user ) {
    if ( isset( $user->roles ) && is_array( $user->roles ) ) {
        if ( in_array( 'subscriber', $user->roles )) {
             $redirect_to = network_site_url("dashboard");
        }
    }
    return $redirect_to;
}
// Used theme's functions.php  
add_action('login_form', 'redirect_after_login'); 
function redirect_after_login() 
{     
global $redirect_to; 
if   (!isset($_GET['redirect_to'])) 
{ 
$redirect_to =   get_option('sample-page');
//  sample-page = your page name after site_url
} }

몇 가지 다른 답변을 바탕으로 저는 다음과 같이 생각해 냈습니다.

/**
 * Require login on all pages
 */
function so8127453_require_login() {
  if ( ! is_user_logged_in() ) {

    $protocol = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
    $base = $_SERVER['SERVER_NAME'];
    $uri = $_SERVER['REQUEST_URI'];

    $attempted_accessed_url = $protocol . $base . $uri;
    $login_url = 'https://' . $base . '/wp-login.php?redirect_to=' . $attempted_accessed_url;

    wp_redirect( $login_url );
  }
}
add_action( 'template_redirect', 'so8127453_require_login' );

모든 트래픽을 로그인 페이지로 리다이렉트 합니다.그 후 시도된 액세스 URL로 이동합니다.

"WordPress 로그인 페이지 새로 고침 및 리디렉션 문제 수정 방법"을 검색했지만 좋은 수정 방법을 찾을 수 없었습니다.이 Stackoverflow 질문에서 도움을 받았습니다.필요할 때 도움을 받을 수 있도록 공유하고 싶습니다.

제 웹사이트에서 이메일과 비밀번호를 입력할 때 wp-admin으로 몇 번이고 리다이렉트하여 비밀번호를 요청했습니다.이 코드를 사용하면 문제를 해결할 수 있습니다.

function admin_default_page() {
  return '/';
}

add_filter('login_redirect', 'admin_default_page');

박스에서 꺼내자마자 이런 걸 발견했어요원하는 경우 인수를 하드코드된 사이트로 대체할 수 있습니다.

wp_loginout($_SERVER['REQUEST_URI']); 

여기에는 다양한 방법이 있습니다.다음 두 가지 옵션이 있습니다.

  1. 사용방법:

OP가 페이지의 ID를 알고 있는 경우 다음 작업이 수행됩니다.

function add_login_check()
{
    if ( is_user_logged_in() && is_page(765)) {
        wp_redirect('https://sample.com/dash'); # Using wp_redirect
        exit;
    }
}
  1. 사용법

이를 위해서는 특정 페이지의 ID를 알아야 합니다.

function add_login_check()
{
    if (is_user_logged_in())) {
        if (is_page(765)){ # If the user is in the page with the ID 765
            wp_safe_redirect( get_permalink('234')); # To get the URL of a specific page from the ID, and using wp_redirect
            exit; 
        }
    }
}

로그인 성공 후 글로벌하게 리다이렉트하려면 wp-login에서 이 코드를 찾습니다.php, 섹션 아래.

   <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">

<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />

를 치환합니다.<?php echo esc_attr($redirect_to); ?>【URL】【URL】URL http http : // 、 / other wise 이 url url 。

한 후 으로 리다이렉트 합니다.<form name="registerform">★★★★★★ 。

그 기능들.php 파일은 로그인 리다이렉트와는 관계가 없습니다.이것은 wp-module이라고 생각하셔야 합니다.php 파일에서는 로그인 인터페이스 전체를 변경할 수 있습니다.또, 유저가 /wp-admin/디렉토리 대신에 커스텀 페이지로 리다이렉트 하도록 강제할 수 있습니다.

Windows 또는 텍스트에디터를 사용하고 있는 경우는, 메모장에서 파일을 엽니다.로그인 후에 리다이렉트 하는 폴더(「wp-admin/」)로 변경해 주세요.Ctrl+F 를 누르고, 파일명을 변경하고, 디폴트 파일명은 「profilephp」를 입력해 주세요.

if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
        $redirect_to = admin_url('profile.php');
    wp_safe_redirect($redirect_to);
    exit();

또는 "등록 취소 플러그인" http://wordpress.org/extend/plugins/registration-login/,을 사용하여 로그인 후 리다이렉트 URL 및 리다이렉트할 곳의 링크를 편집하기만 하면 사용자 고유의 커스텀 프로파일을 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/8127453/redirect-after-login-on-wordpress

반응형