코스모스팜 스레드

위젯 리스트 읽기를 제한할 수 있을까요

어떤 페이지를 회원관리 플러그인을 써서 관리자와 편집자만 볼 수 있게 페이지 제한을 했어요.

그리고 게시판에서 쓰기, 읽기 권한을 관리자와 편집자에게만 주었고요. 메뉴도 플러그인으로 감추었어요.

그런데 공지와 최신글 위젯에서 리스트에  뜨는데, 이것도 감추고 싶어요.

즉 제한한 페이지의 메뉴, 글, 목록 모두 관리자와 편집자가 로그인했을 때만 볼 수 있게 하려는 겁니다.

위젯에서 목록에 노출되는것을 감출 수 있을까요? 

무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
  • 안녕하세요~^^

    KBoard 플러그인에서 kboard_list_where 필터를 사용하시면

    일반 게시글 목록 페이지 또는 최신글 쪽의

    게시글 목록을 가져오는 DB쿼리문의 WHERE절을 편집할 수 있습니다.

     

    KBoard 위젯 플러그인을 사용 중이시라면

    kboard_widget_list_where 필터를 사용해서

    게시글 목록을 가져오는 DB쿼리문 WHERE절을 편집하실 수 있습니다.

     

    KBoard 플러그인 최신글 숏코드를 사용 중이신지

    KBoard 위젯 플러그인을 사용 중이신지 알려주시면

    도움 드릴 방법을 찾아보겠습니다.

    고맙습니다.

  • 위젯 플러그인 사용해요. 공지사항은 <알림> 이라고 이름바꿨고, 알림과 최신글 둘다 감추고 싶습니다^^ 관리자와 편집자까지만 로그인하면 볼수 있도록요
  • 안녕하세요.

    KBoard 위젯 플러그인에서 공지사항, 최신글 탭을 사용 중이신지요?

    공지사항, 최신글 탭의 게시글을 워드프레스 관리자 역할과 편집자 역할에만 표시하시려면

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

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

    add_filter('kboard_widget_list_where', 'my_kboard_widget_list_where', 10, 5);
    function my_kboard_widget_list_where($where, $value, $limit, $exclude, $with_notice){
    	if(in_array($value, array('notice', 'latest'))){
    		$user_id = get_current_user_id();
    		$user = new WP_User($user_id);
    		if(!in_array('administrator', $user->roles) && !in_array('editor', $user->roles)){
    			$where = '1=0';
    		}
    	}
    	
    	return $where;
    }

     

    워드프레스 역할과 권한에 대한 자세한 내용은

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

    https://wordpress.org/support/article/roles-and-capabilities/

    고맙습니다.

  • 위 코드를 넣으니 홈피가 아예 안뜨네요 ㅠㅠ
  • 안녕하세요.

    테마 쪽 functions.php 파일에 코드 추가 시 사이트가 정상적으로 로드되지 않는다면

    디버그 모드를 활성화해서 에러 메시지가 표시되는지 확인해보시겠어요?

    워드프레스 에러 확인하기 - 디버그 모드 활성화 방법

    고맙습니다.

  • 이제 되긴 하는데 모든 공지와 최신글이 아니라 특정게시판만 적용하려고 하는거라서 다시한번 부탁드립니다.

    예를 들어 id 1번과 2번, 3번 게시판만 적용되는 경우라면 어떻게 할까요? 

  • 아, 어려운가요? 그러니까 50개 게시판중 5개 게시판만 적용하는 경우입니다~
  • 안녕하세요~^^

    특정 게시판만 적용하시려면 기존 코드 대신

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

    add_filter('kboard_widget_list_where', 'my_kboard_widget_list_where', 10, 5);
    function my_kboard_widget_list_where($where, $value, $limit, $exclude, $with_notice){
    	if(in_array($value, array('notice', 'latest'))){
    		$user_id = get_current_user_id();
    		$user = new WP_User($user_id);
    		if(!in_array('administrator', $user->roles) && !in_array('editor', $user->roles)){
    			$where .= " AND `board_id` NOT IN('1', '2', '3', '4', '5')";
    		}
    	}
    	return $where;
    }

    위의 코드 중 ('1', '2', '3', '4', '5') 부분을 각 게시판 id로 교체해서 확인해보세요.

    고맙습니다.

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)