안녕하세요, 코스모스팜에서 많은 도움 받고 있어 항상 감사한 마음입니다. :)
워드프레스를 사용하면서 한가지 커스텀하고 싶은 부분이 있는데, 구글링을 해도 방법을 찾을 수 없네요..ㅠ 코스모스팜에 도움을 요청합니다.
현재 : 일반 회원(구독자 등급)이 프론트에서 글(POST)를 발행할 수 있는 A페이지가 있습니다.
니즈 : 이 일반 회원이 등록할 수 있는 글을 1개로 제한하고 싶습니다.
해결? : 1개 이상의 글을 등록한 회원이 A페이지로 접근하게되면 안내문 팝업과 함께 B페이지로 리디렉션을 시키고 싶습니다.
(리디렉션 조건: 1개 이상의 [임시글, 검토중, 발행됨] 상태의 글을 작성한 회원 )
결과만 같다면 비슷한 해결책이라도 찾고 싶습니다..!!!!
안녕하세요~^^
워드프레스 사이트에서 글(Post)을 이미 사용자가 등록했다면
안내창을 표시하고 페이지를 이동하는 예제 코드를 작성해봤습니다.
아래의 코드를 활용해보시겠어요?
add_action('template_redirect', 'template_redirect_20200706');
function template_redirect_20200706(){
$page_id = get_the_ID();
if($page_id == '1'){ // 실제 페이지 아이디로 적용해보세요.
$user_id = get_current_user_id();
$post_type = '포스트타입'; // 실제 포스트 타입으로 적용해보세요.
$redirect_url = '페이지주소'; // 이동할 페이지 주소로 적용해보세요.
$args = array(
'post_type' => $post_type,
'author' => $user_id,
'post_status' => 'publish',
'posts_per_page' => -1
);
$query = new WP_Query($args);
if($query->found_posts){
echo "<script>alert('안내창 문구를 입력해보세요.')</script>";
echo "<script>window.location.href='{$redirect_url}';</script>";
exit;
}
}
}
위의 코드에서 $page_id == '1' 부분은 실제 페이지 id로 적용해주세요.
포스트타입, 페이지 주소 부분은 실제 사이트에 맞게 적용해주세요.
워드프레스에서 페이지 ID를 찾는 방법은 아래 블로그 링크를 확인해주세요.
WP_Query 클래스에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://developer.wordpress.org/reference/classes/wp_query/
고맙습니다.
덕분에 완벽하게 해결되었습니다!
정말 감사합니다. :)