공지사항 글만 모아 보는 게시판 문의

워드프레스 게시판 KBoard(케이보드) 사용중입니다.

현재, 메뉴에 있는 “문의/공지” 게시판 안에서 “계층별 카테고리”를 만들어놓고 그 안에서 “공지사항” 이라는 카테고리를 사용해서 공지글을 올리면서 테스트를 하고 있는 상황입니다.

그런데 이렇게 하는 것 말고, 공지사항은 따로 분리해서, 그냥 일반 커뮤니티 사이트 처럼, 관리자에 의한 공지글은 자동적으로 게시판의 가장 위에 올라가게 하려면 어떻게 해야하는지요?

https://antfx.kr

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

    KBoard 플러그인에서 관리자가 글 작성 시

    옵션 필드의 공지사항 체크박스를 체크하시고 저장하시면

    게시글 목록 페이지에서 공지사항은 상단에 표시됩니다.

     

    최신글 쪽에서도 일반 게시글 목록 페이지처럼 공지사항을 상단에 표시하시려면

    숏코드에서 공지사항을 제외하신 후 스킨의 최신글 쪽 파일을 수정해주셔야 합니다.

    1. 숏코드를 아래처럼 적용해보세요.

    [kboard_latest id="1" url="최신글이동페이지주소" rpp="5" with_notice="false"]

    위의 코드에서 id="1" 부분은 실제 게시판 id로 적용해보세요.

    url은 실제 최신글 이동 페이지 주소로 적용해보세요.

    숏코드에 with_notice="false"가 추가된다면 공지사항을 표시하지 않습니다.

     

    2. FTP로 접속해서 /wp-content/plugins/kboard/skin/사용중인스킨/latest.php 파일에

    아래의 코드를 찾아서

    <tbody>

    찾은 코드 밑에 아래의 코드를 추가해보시겠어요?

    <?php while($content = $list->hasNextNotice()):?>
    <tr>
    	<td class="kboard-latest-title">
    		<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toStringWithPath($board_url)?>">
    			<div class="kboard-default-cut-strings">
    				<?php if($content->isNew()):?><span class="kboard-default-new-notify">N</span><?php endif?>
    				<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    				<?php echo $content->title?>
    				<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
    			</div>
    		</a>
    	</td>
    	<td class="kboard-latest-date"><?php echo $content->getDate()?></td>
    </tr>
    <?php endwhile?>

    위의 코드는 default 스킨을 기준으로 안내해드렸습니다.

    다른 스킨에 적용하시려면 코드가 다를 수도 있습니다.

    고맙습니다.

  • 답변 감사합니다. 하지만, 한가지 문제가,,,

    현제, 옵션의 “비밀글 ”및 “공지사항” 항목에는 관리자로만 선택되어 있기때문에, 비 로그인자가 문의/공지 페이지를 표시하면 옵션 줄에는 당연히 아무것도 표시되지 않습니다. 즉,  비 로그인자에게는 이 옵션 기능이 필요없으므로 옵션 줄을 아예 없에 버리고 싶은데요 어찌하면되나요?
    또한, 계층형 카테고리에 표시되는 “공지사항”도,  당연히 비 로그인자에는 필요없는 부분이므로 비표시로 하고 싶습니다.

    https://antfx.kr/contact/

  • 안녕하세요.

    최신 버전의 KBoard 플러그인 Default 스킨에서

    비로그인 사용자에게 옵션 필드를 안 보이게 하시려면

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

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

    add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html', 10, 4);
    function my_kboard_get_template_field_html($field_html, $field, $content, $board){
    	if($board->id == '1' && !$board->isAdmin() && $field['meta_key'] == 'option'){
    		$field_html = '';
    	}
    	return $field_html;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.

     

    현재 계층형 카테고리에서 비로그인 사용자에게

    특정 카테고리를 안 보이게 하는 기능은 지원하지 않고 있습니다.

    저희도 좋은 방법이 있을지 고민해보겠습니다.

    고맙습니다.

  • 제시해 주신 위 코드를   functions.php 파일 하단에 추가하면 사이트가 하얀페이지로 변하면서 아래와같은 메시지가 나옵니다.

    다시한 번 봐 주시면 감사하겠습니다~. 물론 $board->id == '1' 부분은 실제 게시판 id로 적용해도 안되네요.

    Fatal error: Cannot redeclare my_kboard_get_template_field_html() (previously declared in /home/marginpd/antfx.kr/public_html/wp-content/themes/sango-theme-child/functions.php:201) in /home/marginpd/antfx.kr/public_html/wp-content/themes/sango-theme-child/functions.php on line 269

  • 안녕하세요.

    워드프레스 필터는 여러 개 중복해서 사용하셔도 문제없지만

    PHP에서 같은 함수명을 중복해서 사용할 수는 없습니다.

    이미 테마 쪽 functions.php 파일에 my_kboard_get_template_field_html 함수가 추가되어 있는 듯합니다.

    이전 댓글에 안내해드린 my_kboard_get_template_field_html를

    my_kboard_get_template_field_html1 이런 식으로 기존에 추가하신 코드와 충돌이 나지 않게 바꿔보시겠어요?

    또는 함수명이 중복되는 함수를 찾아서

    아래의 코드처럼 하나의 함수로 적용해주셔도 됩니다.

    add_filter('kboard_get_template_field_html', 'my_kboard_get_template_field_html', 10, 4);
    function my_kboard_get_template_field_html($field_html, $field, $content, $board){
    	if($board->id == '1' && !$board->isAdmin() && $field['meta_key'] == 'option'){
    		$field_html = '';
    	}
    	
    	if($board->id == '2'){
    		// 2번 게시판에 대한 코드
    	}
    	
    	if($board->id == '3'){
    		// 3번 게시판에 대한 코드
    	}
    	return $field_html;
    }

    고맙습니다.

  • 위 코드로 해결되었습니다~ 언제나 친절한 답변 감사드립니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요