리스트 페이지의 상단 add_filter 구현 문의

안녕하세요

KBoard 관련하여 궁금한것이 있습니다.

[kboard id=1] / [kboard id=2] / [kboard id=3] 과 같이 각 게시판이 만들어져 있습니다.

DB의 kboard_board_content에서 board_id= 1  / board_id= 2  /board_id= 3 와 같이 등록한 글에 대해 각 게시판별로 확인도 완료 했구요...

각각의 종류별로 게시판이 생성되어 있고 각 게시판들은 shoprt code로 적용하여 사용하고 있습니다.

리스트 페이지의 리스는 add_filter로 구현되었지만,

상단의 total 및 category부분은 별도의 add_filter로 구현되어 노출되어 지는것으로 보여집니다.

상단의 total 및 category에 대해 적용은 어떻게 해야 하나요???

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • total 또는 카테고리 종류는 필터와 전혀 상관이 없습니다.

    [kboard id=1] 이 숏코드 대로 출력이 됩니다.

    id 값을 1로 넣어주셨드면 게시판 아이디가 1인 게시판의 total 또는 카테고리 값이 출력됩니다.

    즉 숏코드로 입력한 게시판 ID는 절대 바뀌지 않습니다.

    리스트는 쿼리 수정으로 다른 게시판 게시글 까지 가져오지만

    카테고리나 게시판 설정은 [kboard id=1] 이걸로 판단 됩니다.

    바뀌지 않기 때문에 직접 쿼리를 작성하거나 클래스를 사용해서 데이터를 가져와야 한다는 답변입니다^^

  • 게시판 2개를 노출하고 싶은 것이 아닙니다.

    board_id가 3이면 3과 10에 해당하는 board_id에 대해 하나의 게시판에서 노출하려고 합니다.

    게시판 리스트에서 리스트 노출은 제가 원하는 값으로 잘 나오고 있습니다.

    하지만, <?php echo number_format($board->getListTotal())?> total이나 카테고리 종류는 board_id =3에 해당하는 값만 나오고 있어서요....

    상단 : total / category  => board_id =3에 해당하는 데이타 total이나 categoray만 나옴

    하단(리스트) : board_id=3 / board_id=10에 해당하는 데이터 모두 나옴.

  • kboard_list_where 필터를 사용해서 2개의 게시판에 등록된 글을 1개의 게시판에 출력하고 계십니다.

    kboard_list_where 필터를 사용해서 2개 게시판을 한꺼번에 보여주는건 쿼리가 1번 요청된거라 아무리 해도 2개의 리스트를 만들 수 없습니다.

    쿼리 한번에 게시판 리스트를 두 개를 만든다는건 불가능 합니다.

     

    위 아래로 각각 리스트를 출력하고 싶으신거죠? (결과적으로 게시판 리스트가 2개가 표시되는 모습이겠죠.)

    그렇다면 쿼리도 2번 요청을 해야합니다.

     

    한 페이지에 각각 게시판의 최신글 숏코드를 삽입하면 2개의 리스트를 만들 수 있습니다.

    또는 게시판 숏코드를 삽입해도 2개의 게시판을 만들 수 있죠.

    그렇게 한 다음 스킨의 레이아웃을 수정하는 방식으로 진행하셔야 할 듯합니다.

    아니면 프로그램을 아주 많이 수정하셔야 할 듯하군요.

  •  add_filter('kboard_list_where', 'my_kboard_list_where', 10, 2);
     function my_kboard_list_where($where, $board_id){
          if(!is_super_admin() && $board_id=='10'){ // 원하시는 게시판 ID 값으로 바꿔주세요.
               $user_ID = get_current_user_id();
               return "board_id='3' OR board_id='10' ";
          }
          return $where;
     }

    추가하여 사용한 필터 입니다.

    선택한 board_id가 10이면 wp_kboard_board_content의 board_id를 3 or 10의 모든 게시글을 가져오도록 수정했습니다.

    list.php를 보면 

    <!-- 게시판 정보 시작 --><!-- 게시판 정보 끝 -->

    <!-- 카테고리 시작 --><!-- 카테고리 끝 -->

    <!-- 리스트 시작 --><!-- 리스트 끝 -->

    으로 구분 되어 있는데.... 위에서 적용한 add_filter 부분은 <!-- 리스트 시작 --><!-- 리스트 끝 -->에 해당하는 쿼리문만 

    변경되어 데이터를 노출하고 

    <!-- 게시판 정보 시작 --><!-- 게시판 정보 끝 --><!-- 카테고리 시작 --><!-- 카테고리 끝 -->의 정보는 board_id=='10'이라고 function에서 입력받은 board_id의 값만 노출 됩니다.

    예)board_id= 10 의 count는 3개 / board_id=3의 count는 5개라고 하면 

    <!-- 게시판 정보 시작 -->전체 3<!-- 게시판 정보 끝 -->

    <!-- 카테고리 시작 -->board_id 3에 대한 카테고리 정보만 노출<!-- 카테고리 끝 -->

    <!-- 리스트 시작 -->board_id 3 / board_id 10에대한 리스트 노출<!-- 리스트 끝 -->

    상위 2개의 데이터는 변경되지 않습니다.

    해당부분을 수정하려면 어떻게 해야 하나요?

    일부 게시판에서만 add_filter를 적용하여 2개의 게시판에 대한 리스트를 보여 주고 싶습니다.

     

     

     

    <!-- 게시판 정보 시작 -->
        <div class="kboard-list-header">
            <?php if(!$board->isPrivate()):?>
                <div class="kboard-total-count">
                    <?php echo __('Total', 'kboard')?> <?php echo number_format($board->getListTotal())?>
                </div>
            <?php endif?>
            
            <div class="kboard-sort">
                <form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
                    <?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('category3', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
                    
                    <select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
                        <option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
                        <option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
                        <option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
                        <option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
                    </select>
                </form>
            </div>
        </div>
        <!-- 게시판 정보 끝 -->
        
        <?php if($board->use_category == 'yes'):?>
        <!-- 카테고리 시작 -->
        <div class="kboard-category category-mobile">
            <form id="kboard-category-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
                <?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('category3', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
                
                <?php if($board->initCategory1()):?>
                    <select name="category1" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
                        <option value=""><?php echo __('All', 'kboard')?></option>
                        <?php while($board->hasNextCategory()):?>
                        <option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category1() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
                        <?php endwhile?>
                    </select>
                <?php endif?>
                
                <?php if($board->initCategory2()):?>
                    <select name="category2" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
                        <option value=""><?php echo __('All', 'kboard')?></option>
                        <?php while($board->hasNextCategory()):?>
                        <option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category2() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
                        <?php endwhile?>
                    </select>
                <?php endif?>
                
                <?php if($board->initCategory3()):?>
                    <select name="category3" onchange="jQuery('#kboard-category-form-<?php echo $board->id?>').submit();">
                        <option value=""><?php echo __('All', 'kboard')?></option>
                        <?php while($board->hasNextCategory()):?>
                        <option value="<?php echo $board->currentCategory()?>"<?php if(kboard_category3() == $board->currentCategory()):?> selected<?php endif?>><?php echo $board->currentCategory()?></option>
                        <?php endwhile?>
                    </select>
                <?php endif?>
            </form>
        </div>
        
        <div class="kboard-category category-pc">
            <?php if($board->initCategory1()):?>
                <ul class="kboard-category-list">
                    <li<?php if(!kboard_category1()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category1', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
                    <?php while($board->hasNextCategory()):?>
                    <li<?php if(kboard_category1() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
                        <a href="<?php echo $url->set('category1', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
                    </li>
                    <?php endwhile?>
                </ul>
            <?php endif?>
            
            <?php if($board->initCategory2()):?>
                <ul class="kboard-category-list">
                    <li<?php if(!kboard_category2()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category2', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
                    <?php while($board->hasNextCategory()):?>
                    <li<?php if(kboard_category2() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
                        <a href="<?php echo $url->set('category2', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
                    </li>
                    <?php endwhile?>
                </ul>
            <?php endif?>
            
            <?php if($board->initCategory3()):?>
                <ul class="kboard-category-list">
                    <li<?php if(!kboard_category3()):?> class="kboard-category-selected"<?php endif?>><a href="<?php echo $url->set('category3', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->tostring()?>"><?php echo __('All', 'kboard')?></a></li>
                    <?php while($board->hasNextCategory()):?>
                    <li<?php if(kboard_category3() == $board->currentCategory()):?> class="kboard-category-selected"<?php endif?>>
                        <a href="<?php echo $url->set('category3', $board->currentCategory())->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toString()?>"><?php echo $board->currentCategory()?></a>
                    </li>
                    <?php endwhile?>
                </ul>
            <?php endif?>
        </div>
        <!-- 카테고리 끝 -->
        <?php endif?>

     

  • 어떤 필터를 말씀하시나요?

    스킨 파일 내에서 $board 변수를 사용할 수 있습니다.

    스킨의 list.php 파일 또는 document.php 파일 등에 <?php echo number_format($board->getListTotal())?> 이 코드를 넣으면 게시판 리스트에 보여지는 전체 게시글 수를 출력합니다.

    <?php echo $board->id?> 이렇게 하시면 게시판 ID를 출력합니다.

    어떻게 하고싶으신지 좀 더 구체적으로 알려주시겠어요?

    만드신 코드가 있다면 알려주세요.

    페이지 주소도 알려주시면 좋구요^^

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