안녕하세요! Kboard 너무 잘 활용하고 있고, 많은 도움에 항상 감사한 마음입니다. :)
[본인의 글만 보기] 가 활성화 된 게시판의
[최신글]에서는 본인의 글만 보이는게 아니라 모든 글 리스트가 노출되게 할 수 있을까요??
(제목만 노출시키고 링크 속성을 해제하려고 합니다.)
일반 게시판 리스트 > 본인의 글만 노출
최신글 리스트 > 모든 글 노출
확인 부탁드려요..!!
안녕하세요~^^
KBoard 플러그인에서 kboard_list_where 필터를 활용하시면
게시글 목록을 불러오는 DB쿼리문의 WHERE절을 편집할 수 있습니다.
리스트 보기 설정을 본인의 글만 보기로 설정하실 경우
읽기권한과 쓰기권한을 모두 로그인 사용자 이상으로 설정해주셔야 합니다.
최신글일 때는 다른 사용자의 게시글도 볼 수 있게 하시려면
아래의 코드를 활용해보시겠어요?
add_filter('kboard_list_where', 'kboard_list_where_2020_04_20', 10, 3);
function kboard_list_where_2020_04_20($where, $board_id, $list){
if($list->is_latest && $board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$latest_where = array();
$latest_where[] = "`board_id`='{$board_id}'";
$latest_where[] = "`parent_uid`='0'";
$latest_where[] = "(`status`='' OR `status`='pending_approval')";
$where = implode(' AND ', $latest_where);
}
return $where;
}
테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.
매번 친절한 답변 정말 감사합니다. :)
공유해주신 방법으로 잘 적용하였습니다.
지금은 [최신글] 리스트가 로그인한 사용자에게만 노출되는데
해당 [최신글] 리스트만 비회원(로그아웃된) 에게도 노출시킬 수 있을까요?
검색해봐도 방법을 찾지 못해 또 여쭤봅니다..ㅠㅠ
안녕하세요.
말씀하신 것처럼 적용하시려면
KBoard 설정 변경 및 이전 댓글에 안내해드린 코드를 조금 수정해주셔야 합니다.
1. 워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 권한설정 탭에서
리스트 보기를 전체글 보기로 설정해보세요. (본인의 글만 보기로 설정 시 코드가 동작하지 않습니다.)
2. 기존의 코드 대신 아래의 코드로 교체해서 확인해보시겠어요?
add_filter('kboard_list_where', 'kboard_list_where_2020_04_20', 10, 3);
function kboard_list_where_2020_04_20($where, $board_id, $list){
if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$latest_where = array();
if($list->is_latest){
$latest_where[] = "`board_id`='{$board_id}'";
$latest_where[] = "`parent_uid`='0'";
$latest_where[] = "(`status`='' OR `status`='pending_approval')";
$where = implode(' AND ', $latest_where);
}
else{
$user_id = get_current_user_id();
$latest_where[] = "`board_id`='{$board_id}'";
$latest_where[] = "`parent_uid`='0'";
$latest_where[] = "`member_uid`='{$user_id}'";
$latest_where[] = "(`status`='' OR `status`='pending_approval')";
$where = implode(' AND ', $latest_where);
}
}
return $where;
}
위의 코드에서 $board_id == '1' 부분은 실제 게시판 id로 적용해주세요.
고맙습니다.
적용해 보았는데
[최신글]은 의도했던 것처럼 잘 구현되었습니다! :)
[일반 게시글]의 경우 관리자까지 본인의 글만 볼 수 있도록 설정된 것 같아요.
현 상태에서 관리자는 해당 게시판의 모든 글을 볼 수 있게 설정이 가능할까요?
안녕하세요.
관리자는 모든 글을 볼 수 있게 하시려면
이전 댓글에 안내해드린 코드 중 $board_id == '1' 부분을
$board_id == '1' && !$board->isAdmin() 으로 교체해서 확인해보시겠어요?
고맙습니다.
add_filter('kboard_list_where', 'kboard_list_where_2020_04_20', 10, 3);
function kboard_list_where_2020_04_20($where, $board_id, $list){
if($board_id == '1' && !$board->isAdmin()){
$latest_where = array();
if($list->is_latest){
$latest_where[] = "`board_id`='{$board_id}'";
$latest_where[] = "`parent_uid`='0'";
$latest_where[] = "(`status`='' OR `status`='pending_approval')";
$where = implode(' AND ', $latest_where);
}
else{
$user_id = get_current_user_id();
$latest_where[] = "`board_id`='{$board_id}'";
$latest_where[] = "`parent_uid`='0'";
$latest_where[] = "`member_uid`='{$user_id}'";
$latest_where[] = "(`status`='' OR `status`='pending_approval')";
$where = implode(' AND ', $latest_where);
}
}
return $where;
}
말씀주신 것과 같이 테마의 function.php에서 수정하였는데,
반영하면 홈페이지가 먹통이 됩니다.ㅠㅠ
답변을 남기면서 착오가 있었습니다.
올려주신 코드 중에서 아래의 코드를 찾아서
if($board_id == '1' && !$board->isAdmin()){
찾은 코드 위에 아래의 코드를 추가해보시겠어요?
$board = new KBoard($board_id);
고맙습니다.