전체 통합 게시판 카테고리 연동 문의

게시판의 ID들을 이용해서 통합 게시판을 만들고자 합니다. ( 이 부분은 월간베스트 방법을 참조하면 될것 같긴 합니다)

기존에 각 게시판별로 카테고리를 등록해둔것도

통합 게시판에서는 게시판별 카테고리들이 전부다 상단에 뜨도록 하고 싶은데요, 도움 부탁드립니다.

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

    KBoard 플러그인에서 특정 게시판에 다른 게시판의 카테고리1을 표시하시려면

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

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

    add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
    function my_kboard_skin_header($builder){
    	$board = $builder->board;
    	
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$kboard_list = new KBoardList();
    		$kboard_list->init();
    		
    		$category1_list = array();
    		foreach($kboard_list->resource as $kboard){
    			if($kboard->category1_list){
    				$category1_list[] = $kboard->category1_list;
    			}
    		}
    		
    		$board->category1_list = implode(',', $category1_list);
    	}
    }

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

    고맙습니다.

  • 감사합니다, 카테고리 노출은 잘 적용이 됩니다. 추가 질문이 있습니다,

     

    1. 카테고리 클릭시 url은 선택한 카테고리로 파라미터가 붙어서 이동하는게 보이는데요,

    목록은 그대로 전체 게시글 전부가 노출됩니다. 쿼리옵션에 get으로 던져지는 category1 을 받아서 WHERE를 걸어줘야 할까요?

     

    2. $kboard_list = new KBoardList(); 객체생성할때 id를 통해 특정 게시판만 선택하는법 문의드립니다.

    (전체글 모아보기를 (`board_id` BETWEEN '1' AND '23') 이렇게 옵션을 주어서 가져오는데 카테고리도 저 게시판들로만 가져오고 싶습니다)

     

    3. 모여진 게시글 목록을 클릭해보면 '본 게시글은 이동되었습니다' 라고 메세지창이 뜨고 다시 목록 페이지로 돌아오는데요,

    해당 글의 내용페이지로 이동시키려면 어떡해야 될까요?

     

    질문이 많네요, 항상 친절한 답변 감사드립니다.

  • 1. 통합 게시판 사용 시 카테고리 기능도 정상적으로 동작하게 하시려면

    kboard_list_where 필터에 카테고리1의 값을 적용해주셔야 합니다.

    실제 추가하신 코드를 에디터의 "코드 스니펫 삽입" 기능으로 올려주시면

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

     

    2. 게시판 id가 1~23인 게시판의 카테고리를 가져오시려는 지요?

    이전 댓글에 안내해드린 코드 중

    아래의 코드를 찾아서

    if($kboard->category1_list){

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

    if($kboard->category1_list && $kboard->uid >= '1' && $kboard->uid <= '23'){

     

    3. '이 게시글은 이동되었습니다.' 안내창이 표시된다면

    테마 쪽 functions.php 파일에

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

    add_filter('kboard_allowed_board_id', 'my_kboard_allowed_board_id', 10, 2);
    function my_kboard_allowed_board_id($allowed_board_id, $board){
        if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
            $allowed_board_id = array();
            for($i=1; $i<=23; $i++){
                $allowed_board_id[] = $i;
            }
        }
        return $allowed_board_id;
    }

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

    고맙습니다.

  • 답변 감사합니다,

    1번 사항 적용해둔 코드 올려드립니다.

     

    add_filter('kboard_list_where', 'month_best_kboard_list_where', 10, 3);
    function month_best_kboard_list_where($where, $board_id, $content_list){
    	
    	if($board_id == '66'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		//$date = date('Ym01000000', current_time('timestamp')); // 이번달 시작 날짜 기준
    		
    		$where = "(`board_id` BETWEEN '1' AND '23') AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    	}
    	
    	return $where;
    }

     

  • 통합 게시판에 카테고리도 적용하시려면

    올려주신 코드를 아래의 코드로 교체해서 확인해보시겠어요?

    add_filter('kboard_list_where', 'month_best_kboard_list_where', 10, 3);
    function month_best_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '66'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$category1 = kboard_category1();
    		if($category1){
    			$where = "(`board_id` BETWEEN '1' AND '23') AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') AND `category1`='{$category1}'";
    		}
    		else{
    			$where = "(`board_id` BETWEEN '1' AND '23') AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    		}
    	}
    	
    	return $where;
    }

     

    추가로, KBoard 플러그인에서 게시글의 카테고리1은

    데이터베이스(DB) kboard_board_content 테이블에 category1 컬럼으로 저장됩니다.

    kboard_category1 함수를 사용하시면 현재 선택된 카테고리1을 가져올 수 있습니다.

    고맙습니다.

  • 잘 됩니다, 정말 고맙습니다.

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