특정글을 관리자로 로그인하면 보이도록 하는 방법 문의

자료실과 공지사항을 작성하다보면 특정글을 임시로 외부에 안보이게 하고 싶을때가 있습니다.

관리자로 로그인하면 보이지만 로그인하지 않은 일반 사용자들에게 특정글이 안보이게 하려면 어떻게 해야 하는지요?

자료실과 공지사항 둘다 해당 기능을 어떻게 구현해야 하는지 문의드립니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    해당 게시글을 승인 대기 중 상태로 변경해보시겠어요?

    KBoard 플러그인에서 승인 대기 중인 게시글의 내용은 글 작성자 또는 관리자만 확인할 수 있습니다.

    워드프레스 관리자 -> KBoard -> 전체 게시글 페이지에서 

    게시글 상태를 승인 대기 중 -> 발행됨으로 변경할 수 있습니다.

    고맙습니다.

  • 제목 그대로 특정글만 관리자(로그인 후)가 볼 수 있고 일반인은 그 특정글만 볼 수 없고 나머지 글만 볼 수 있는 방법을 찾고 있습니다.

    이런 기능이 가능할지요?

  • 네, 맞습니다.

    게시글 전체를 관리자만 볼 수 있고 그 외의 사용자는 볼 수 없는 코드입니다.

    만약, 승인 대기 중인 글을 관리자에게만 표시하시려면

    아래의 코드로 적용해주시면 됩니다.

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '1' && !$content_list->board->isAdmin()){
    		$where .= "AND (`status`='' OR `status` IS NULL)";
    	}
    	return $where;
    }

    관리자만 로그인이 가능하다면

    !$content_list->board->isAdmin() 부분을 !is_user_logged_in()으로 교체해주셔도 됩니다.

    고맙습니다.

  • 답변 감사합니다.^^

    혹시 위의 코드가 게시글 전체를 관리자만 볼 수 있도록하는 기능인지요?

    특정글에 대하여 관리자만 로그인 후 볼 수 있는 기능을 원하는것인데 

    그에 대한 코드 인지 문의드립니다.

  • 관리자만 리스트를 볼 수 있게 하시려는 목적이신지요?

    아래의 코드로 교체해보시겠어요?

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '1'){
    		if(!$content_list->board->isAdmin()){
    			$where = '1=0';
    		}
    	}
    	return $where;
    }

    위의 코드로 적용하시면 관리자만 게시글 목록을 볼 수 있습니다.

    관리자만 로그인이 가능하다면

    !$content_list->board->isAdmin() 부분을 !is_user_logged_in()으로 교체해주셔도 됩니다.

    고맙습니다.

  • 친절하신 답변 감사합니다.

    테마는 자식테마를 만들어서 사용하고 있는데 그렇다면 function.php을 수정해도

    KBoard를 업데이트 해도 지워지지 않겠네요..^^

     

    의미 전달이 조금 부족했나봅니다.

    제가 문의드린 질문은 아래와 같습니다.

    로그인은 관리자만 할 수 있기 때문에 관리상의 문제로 특정글은 로그인을 해야지만 보여지는것을 원하는것이었습니다.

    일반 홈페이지 접속자들은 리스트에서 볼 수 없고 로그인한 관리자만 관리를 위해 보여지길 원했던 것입니다.

    이런 기능이 가능할지요?

     

  • 안녕하세요.

    테마 편집기는 테마에 따라 표시되지 않을 수도 있습니다.

    워드프레스 관리자 페이지에서 찾을 수 없다면 FTP로 접속해서 추가해주시면 됩니다.

    테마 쪽 functions.php 파일에 추가하신 코드는 KBoard 플러그인을 업데이트해도 유지됩니다.

    다만, 자식 테마를 만들고 자식 테마의 functions.php 파일에 코드를 추가하신 게 아니라면

    테마 업데이트 시 functions.php 파일에 추가하신 코드가 지워질 수도 있습니다.

     

    관리자에게는 승인대기중인 글을 표시하시려면

    아래의 코드로 적용해보시겠어요?

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '1' && !$content_list->board->isAdmin()){
    		$where .= "AND (`status`='' OR `status` IS NULL)";
    	}
    	return $where;
    }

    고맙습니다.

  • 답변 감사합니다.

    그런데 function.php파일이 워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에 있나요?

    직접 FTP로 접속해야 하는거 아닌지요?

    아니면 외모-> 테마에 편집기가 별도로 안보입니다.

    그리고 혹시 KBOARD 업데이트 하면 다시 수정해야 하는건지요?

     

    알려주신바와 같이 function.php파일을 수정하였습니다.

    승인대기중인 글이 목록에서는 안보입니다.-> 감사합니다.

    그런데 관리자로 로그인해도 승인대기중인 글이 안보이네요...

    관리자 로그인 상태에서는 해당글이 보여지고 로그인하지 않은 상태에서는 보여지지 않길 바라는것인데...

    이렇게는 안되는지요?

  • 승인 대기 중인 게시글을 목록에서 안 보이게 하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '1'){
    		$where .= "AND (`status`='' OR `status` IS NULL)";
    	}
    	return $where;
    }

    위 코드에서 $board_id == '1' 부분은 실제 게시판 id로 수정하신 후에 적용해보세요.

    적용하시려면 게시판이 여러 개라면

    $board_id == '1' 코드를 in_array($board_id, array('1', '2', '3')) 이런 식으로 적용해보시겠어요?

    고맙습니다.

  • 적용해 보니 작성한 글은 보이질 않지만

    게시글 목록에

    [승인대기] 관리자의 승인을 기다리고 있습니다.

    라는 글이 보입니다.

    이 글조차 않보일 수 는 없는지요?

  • 감사합니다.

    바로 적용해 보겠습니다.^^

  • 안녕하세요.

    이전 댓글에 안내해드린 내용으로 충분히 하실 수 있을 듯합니다.

    1. 관리자에게만 표시할 특정 글의 상태를 승인 대기 중으로 변경해보시겠어요?

    KBoard 플러그인에서 승인 대기 중인 글은 게시글 목록에 표시는 되지만

    게시글의 내용은 글 작성자 또는 관리자만 확인할 수 있습니다.

     

    2. 게시글 목록 페이지에서 승인 대기 중인 글을 관리자에게만 표시하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해주시면 됩니다.

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '1' && !$content_list->board->isAdmin()){
    		$where .= "AND (`status`='' OR `status` IS NULL)";
    	}
    	return $where;
    }

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기