게시판 리스트에 인기글 상단 배치

안녕하세요

이전에도 문의를 드린적이 있는데 검색을 하다보니 아래와 같은 글을 찾아서 혹시 적용가능한지 문의드립니다.

https://www.thewordcracker.com/intermediate/how-to-show-top-posts-in-kobard-in-wordpress/

해당 링크글을 보면 아래의 코드를 적절히 삽입하면 된다고 하는데... 오래된 글이기도 하고 개발자가 아니어서 어떻게 해야 하는지 막막하네요.

혹시 가능할까요?

항상 감사합니다.

$top_content = new KBContent();
$results = $wpdb->get_results($wpdb->get_row("SELECT * FROM `{$wpdb->prefix}kboard_board_content` WHERE `board_id`='1' ORDER BY `view` DESC LIMIT 3"));
foreach($results as $key=>$row){
$top_content->initWithRow($row);
echo $top_content->title;
}

 

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

    KBoard의 클래스 중 KBContentList 클래스는

    리스트를 출력하는 클래스 입니다.

     

    defalut 스킨 기준으로 설명드리겠습니다.

    wp-content/plugins/kboard/skin/default/list.php 파일 중 아래의 코드를 찾아서

    <?php while($content = $list->hasNext()):?>

    아래의 코드처럼 위에 삽입해주세요.

    <?php
    global $wpdb;
    $top_list = new KBContentList($board->id);
    $top_category1 = kboard_category1();
    $top_category2 = kboard_category2();
    $top_list->category1($top_category1);
    $top_list->category2($top_category2);
    $top_list->rpp(3); // 리스트 개수
    $top_list->setSorting('viewed'); // 정렬 순서
    $top_list->getList('', 'title', false); // false: 공지사항 미포함
    ?>
    <?php while($top_content = $top_list->hasNext()):?>
    <tr class="<?php if($top_content->uid == kboard_uid()):?>kboard-list-selected<?php endif?>">
    	<td class="kboard-list-uid">
    		<?php echo '인기글'?>
    	</td>
    	<td class="kboard-list-title">
    		<a href="<?php echo esc_url($url->getDocumentURLWithUID($top_content->uid))?>">
    			<div class="kboard-default-cut-strings">
    				<?php if($top_content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    				<?php if($top_content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    				<?php echo $top_content->title?>
    				<span class="kboard-comments-count"><?php echo $top_content->getCommentsCount()?></span>
    			</div>
    		</a>
    		<div class="kboard-mobile-contents">
    			<span class="contents-item kboard-user"><?php echo $top_content->getUserDisplay()?></span>
    			<span class="contents-separator kboard-date">|</span>
    			<span class="contents-item kboard-date"><?php echo $top_content->getDate()?></span>
    			<span class="contents-separator kboard-vote">|</span>
    			<span class="contents-item kboard-vote"><?php echo __('Votes', 'kboard')?> <?php echo $top_content->vote?></span>
    			<span class="contents-separator kboard-view">|</span>
    			<span class="contents-item kboard-view"><?php echo __('Views', 'kboard')?> <?php echo $top_content->view?></span>
    		</div>
    	</td>
    	<td class="kboard-list-user"><?php echo $top_content->getUserDisplay()?></td>
    	<td class="kboard-list-date"><?php echo $top_content->getDate()?></td>
    	<td class="kboard-list-vote"><?php echo $top_content->vote?></td>
    	<td class="kboard-list-view"><?php echo $top_content->view?></td>
    </tr>
    <?php endwhile?>
    <?php while($content = $list->hasNextNotice()):?>

    위 코드를 표현하고자 하는 레이아웃에 맞게

    적절히 조정하여 사용하시면 됩니다.

     

    정렬순서를 조회순이 아닌 추천순으로 하려면

    viewed 대신 best 를 입력해보시겠어요?

     

    $wpdb를 사용하여 출력하시려면

    올려주신 내용처럼 $wpdb를 사용하여 직접 출력하셔도 됩니다.

    $wpdb에 대해 자세히 알아보시려면 아래 링크를 참고해주세요.

    https://developer.wordpress.org/reference/classes/wpdb

    고맙습니다.

  • 안녕하세요

    항상 친절한 답변 진심으로 감사드립니다.

    위의 코드를 적용하면 기간제한없이 조회수가 많은 아주 오래된 게시글을 위로 배치하는데 맞는지요?

    혹시 기간을 1주일로 설정 가능한가요?

    다시한번 감사드립니다.

  • 안녕하세요.

    이전 댓글에 안내해드린 코드를 적용하시면

    말씀하신 것처럼 기간과는 상관없이 조회수가 많은 순으로 게시글을 표시합니다.

     

    만약, 기간을 1주일로 설정하시려면

    KBContentList 클래스의 setDateRange 메소드를 활용해보세요.

    설정한 기간 동안의 게시글을 가져와서 표시하실 수 있습니다.

     

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

    아래의 코드를 찾아서

    $top_list->setSorting('viewed'); // 정렬 순서

     

    찾은 코드 밑에 아래의 코드를 추가해보세요.

    $start_date = date('Ymd', strtotime('-1 week', current_time('timestamp')));
    $end_date = date('Ymd', current_time('timestamp'));
    $top_list->setDateRange($start_date, $end_date);

     

    KBContentList 클래스는

    FTP로 접속해서 /wp-content/plugins/kboard/class/KBContentList.class.php 파일입니다.

    고맙습니다.

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