안녕하세요?
현재 필수정보 입력란을 체크하면 소셜 회원가입시
로그인이 되면서 필수정보 입력페이지로 리다이렉트됩니다.
저희 사이트에서는 약관동의 페이지가 따로 있어서
그쪽으로 먼저 리다이렉트 된 후 > 필수정보 입력페이지로 이동되길 원합니다.
add_action('cosmosfarm_members_pre_user_required', 'add_agreement');
function add_agreement(){
$user_id = get_current_user_id();
$user_meta = get_user_meta($user_id, 'cosmosfarm_members_social_channel');
if($user_meta){
wp_redirect('/agreement');
exit;
}
}
위와 같은 코드를 만들어뒀는데,
redirect 된 후에 다시 필수정보입력페이지로 넘어가거나
redirect 횟수가 너무 많다며 브라우저 오류가 발생할 때도있네요.
Cosmosfarm_Members.class.php에 user_required() 함수인데 직접 수정하지않고
어떤 방법으로 필터나 훅을 사용해야할까요?
기존 액션을 지우고 다시해야하는건지 궁금합니다.
안녕하세요~^^
코스모스팜 회원관리 플러그인 필수정보 반드시 입력 기능은
WP-Members 플러그인에서 필수로 선택된 필드 정보가 비어있다면 회원정보 페이지로 이동합니다.
페이지가 로딩될 때마다 동작하기 때문에
별도의 코드를 추가해주셔야 합니다.
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보세요.
add_action('template_redirect', 'my_template_redirect');
function my_template_redirect(){
global $cosmosfarm_members;
$page_id = get_the_ID();
if($page_id == '1'){ // 실제 페이지 ID로 적용해주세요.
remove_action('wp_footer', array($cosmosfarm_members, 'user_required'));
}
}
add_action('cosmosfarm_members_pre_user_required', 'add_agreement');
function add_agreement(){
$user_id = get_current_user_id();
$user_meta = get_user_meta($user_id, 'cosmosfarm_members_social_channel', true);
if($user_meta){
echo "<script>window.location.href='페이지주소'</script>";
exit;
}
}
위의 코드에서 $page_id == '1' 부분은 별도로 추가하신
약관동의 페이지 ID로 적용해보세요.
워드프레스에서 페이지 ID를 찾는 방법은 아래 블로그 링크를 확인해주세요.
위의 코드를 그대로 적용하시면 소셜 로그인으로 로그인한 사용자가
약관동의를 했더라도 필수정보 필드를 입력하지 않으면 약관동의 페이지로 이동합니다.
약관동의를 했는지 체크할 수 있다면 cosmosfarm_members_pre_user_required 액션에
$user_meta 값과 더불어 체크를 해주셔야 할 듯합니다.
고맙습니다.
답변 감사합니다.
우선 해당 코드를 사용하니 window.location.href='도메인'이 무한 루프로 실행되네요
그래서 IF 조건문에 page_id를 넣어 아래와 같이 바꿨습니다.
add_action('cosmosfarm_members_pre_user_required', 'add_agreement');
function add_agreement(){
$user_id = get_current_user_id();
$user_meta = get_user_meta($user_id, 'cosmosfarm_members_social_channel', true);
$page_id = get_the_ID();
if($user_meta && $page_id != '123'){
echo "<script>window.location.href='/agreement'</script>";
exit;
}
}
이렇게하니 정상작동합니다 감사합니다.
if($user_meta){
echo "<script>window.location.href='/agreement';</script>";
exit;
}
이렇게해도 정상작동하네요
스크립트문에 ;이 빠졌었습니다.
답변 감사합니다.
결혼 문화도 시대에 따라 변합니다. 대전 웨딩박람회를 방문하면 최근 어떤 스타일과 상품이 주목받는지 자연스럽게 파악할 수 있습니다. 최근에는 형식보다 의미를 중시하는 흐름이 뚜렷합니다. 정해진 순서를 그대로 따르기보다 두 사람에게 의미 있는 방식으로 예식을 구성하는 커플이 늘고 있습니다. 규모 면에서도 변화가 있습니다. 무조건 큰 예식보다 하객 수를 조절해 대접의 질을 높이는 방향을 선택하는 경우가 많아졌습니다. 예단과 예물도 간소화하는 추세입니다. 다만 트렌드를 그대로 따를 필요는 없습니다. 유행하는 스타일이 본인들과 맞지 않으면 오히려 어색해질 수 있습니다. 참고하되 두 사람의 취향과 상황에 맞게 조절하는 것이 좋습니다. 박람회는 이런 흐름을 직접 확인할 수 있는 자리입니다. 여러 업체가 어떤 상품을 내놓는지 보면 현재 무엇이 주목받는지 감이 잡힙니다. 그중 두 사람에게 맞는 것을 골라내는 안목이 중요합니다. 최신 흐름을 확인할 수 있는 대전 웨딩박람회 일정 확인하기