로그인하지 않은 사용자를 특정 페이지로 리디렉션하는 방법은 무엇입니까?
4 대답
- 투표
-
- 2014-01-31
다음은 특정 요구에 맞게 작동하도록 약간 수정해야하는 두 가지 예입니다.
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' ); function redirect_non_logged_users_to_specific_page() { if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { wp_redirect( 'http://www.example.dev/page/' ); exit; } }
하위 테마 함수 파일에 입력하고 페이지 ID 또는 슬러그 및 리디렉션 URL을 변경합니다.
다음과 같은 코드를 사용할 수도 있습니다.
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.dev/your-page/', 301 ); exit; } }
메시지를 페이지에 직접 추가하거나 로그인하지 않은 모든 사용자에게 메시지를 표시하려는 경우 코드에 추가 합니다.
Here are 2 examples which you will need to modify slightly to get it working for your specific needs.
add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' ); function redirect_non_logged_users_to_specific_page() { if ( !is_user_logged_in() && is_page('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) { wp_redirect( 'http://www.example.dev/page/' ); exit; } }
Put this in your child theme functions file, change the page ID or slug and the redirect url.
You could also use code like this:
add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_page('slug') && ! is_user_logged_in() ) { wp_redirect( 'http://www.example.dev/your-page/', 301 ); exit; } }
You can add the message directly to the page or if you want to display the message for all non logged in users, add it to the code.
-
답 해주셔서 감사합니다.`add_action ( 'template_redirect','redirect_to_specific_page'); function redirect_to_specific_page () { if (is_page ( 'http://mydomain.com/participate') &&!is_user_logged_in ()) { wp_redirect ( 'http://mydomain.com/login',301); 출구; } }`하지만 작동하지 않습니다Thanks for you answer I did like this `add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }` But its not working
- 0
- 2014-01-31
- user3187719
-
http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags URL이 아닌 여기에서 페이지i.d 또는 slug를 사용하세요.Use the page i.d or slug here, not the url http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags
- 0
- 2014-01-31
- Brad Dalton
-
is_page ( '참여')is_page('participate')
- 0
- 2014-01-31
- Brad Dalton
-
- 2017-11-17
이것이 더 나을 것입니다 :
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
이렇게하면 사용자를 로그인 페이지로 리디렉션합니다.로그인하면 사용자는 처음에 액세스하려고했던 보안 페이지로 다시 리디렉션됩니다.
여기에있는 문서 :
https://codex.wordpress.org/Function_Reference/auth_redirect
This would be better:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
What this does is redirect the user to the login page. Once logged in, the user is redirected back to the secure page they were trying to access initially.
Documentation here:
https://codex.wordpress.org/Function_Reference/auth_redirect
-
- 2014-01-30
표시 할 내용과 위치를 알려주지 않은 경우 어디에 표시 할 것인지 어떻게 알 수 있습니까? 전체 게시물? 페이지? 페이지의 사용자 지정 부분? 죄송합니다. 오늘 제 수정 구슬이 제대로 작동하지 않는 것 같습니다.
당신이 그렇기 때문에,저는 당신을 인용합니다 : "워드 프레스 초보자"당신은 직접적인 대답을 요구하는 것보다 배워야합니다.
where 에 관해서는 참조 1 링크를 읽어야합니다. 어떤 파일을 넣어야하는지 알려줍니다.
방법 은 먼저 참조 링크 2와 3을 읽어야합니다.
전체적으로 다음과 같이 표시되어야합니다.
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
물론 위 코드는 루프 로 들어가야합니다. 원하는대로 복잡하거나 간단하게 구성 할 수 있습니다. 예를 들어 로그인하지 않은 경우 간단한 텍스트 대신 전체 가입 양식을 표시하거나-내가 제안한대로-사용자가 로그인 할 수있는 분할 된 화면 (사용자가 계정을 가질 수 있지만 로그인하는 것을 잊었으므로) 또는 가입 할 수 있습니다. (없는 경우).
아래 댓글 뒤에 추가됨 :
리디렉션하려면
header
과 함께wp_login_url
를 사용하세요.-다시 아래 참조 1과 2를 확인하세요.if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
참조 :
How can we tell you where to put it if you didn't tell us what and where you want to display it? Whole posts? Pages? Custom parts of pages? Sorry... I guess my crystal ball isn't quite working today.
Since you are, and I quote you: "a newbie to wordpress" you should rather learn, than to ask for direct answer.
As for where you should read the reference 1 link. This will tell you which file you need to put it in.
As for how to do it you should first read reference link 2 and 3.
Overall it should look something like this:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Of course the above code needs to go into a loop. You can build it up as complex or as simple as you want. For example instead of simple text if not logged in you can display whole sign up form for example or - as I would suggest - a divided screen where user can log in (since user can have an account but forgot to sign in) or sign up (if he doesn't have one).
Added after comments below:
To redirect use
header
with thewp_login_url
- again, check references 1 and 2 below:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Reference:
-
실제로 요청 된 URL 또는 영구 링크를 반환하는 워드 프레스의 기능을 모릅니다.그리고 표시되는 메시지에 대해서는 그대로 두십시오. 로깅하지 않고 특정 URL을 요청할 때 리디렉션하고 싶습니다.Actually i don't know the funtction on wordpress that returns the requested URL or permalink. And about the dispaly message, leave it, I want to just want to redirect them when they request for certain URL without being logged.
- 0
- 2014-01-31
- user3187719
-
$pagenow로 할 수 있나요?can I do it with $pagenow?
- 0
- 2014-01-31
- user3187719
-
@ user3187719가 내 원래 답변을 편집하고 리디렉션 할 솔루션을 추가했습니다.추신.`$pagenow`?당신은 대포로 파리를 죽이려고 노력하고 있는데,그것이 작동 할 것이라는 확신이 있지만,왜 그렇게 복잡합니까?단순하게 유지하십시오.PS2 : PHP 및 WP Codex 배우기.@user3187719 edited my original answer and added the solution to redirect. PS. `$pagenow`? You are trying to kill a fly with a cannon sure it will work, but why so complex? Keep it simple. PS2: Learn PHP and WP Codex.
- 0
- 2014-01-31
- Borek
-
- 2014-12-13
특정 페이지로 리디렉션 할 수 없지만 로그인하지 않은 모든 사용자는 로그인 화면으로 리디렉션됩니다.
<?php auth_redirect(); ?>
Wordpress 참조 :
auth_redirect()
다른 해결책을 언급하겠습니다.
You can't redirect to a specific page, but every non-logged-in user will be redirected to Log-In Screen.
<?php auth_redirect(); ?>
Wordpress Reference:
auth_redirect()
Just to mention another solution.
특정 페이지/URL을 요청하는 로그되지 않은 사용자를 다른 페이지/URL로 리디렉션하고 "회원 전용"과 같은 메시지를 표시하는 방법나는!is_user_logged_in () 함수를 사용하여 코딩하는 것이 매우 쉽다는 것을 알고 있지만 WordPress의 초보자이기 때문에 코딩하는 방법을 모르겠습니다.코드도 넣을 파일을 알려주세요.