구독자가 발행한 POST가 1개 이상 있을 때 특정페이지 접근 제한

안녕하세요, 코스모스팜에서 많은 도움 받고 있어 항상 감사한 마음입니다. :)
워드프레스를 사용하면서 한가지 커스텀하고 싶은 부분이 있는데, 구글링을 해도 방법을 찾을 수 없네요..ㅠ  코스모스팜에 도움을 요청합니다.

현재 : 일반 회원(구독자 등급)이 프론트에서 글(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를 찾는 방법은 아래 블로그 링크를 확인해주세요.

    워드프레스에서 페이지(포스트) ID를 찾는 방법

     

    WP_Query 클래스에 대한 자세한 내용은

    아래의 링크를 참고해보세요.

    https://developer.wordpress.org/reference/classes/wp_query/

    고맙습니다.

  • 덕분에 완벽하게 해결되었습니다!

    정말 감사합니다. :)

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기