안녕하세요
이전에도 문의를 드린적이 있는데 검색을 하다보니 아래와 같은 글을 찾아서 혹시 적용가능한지 문의드립니다.
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 파일입니다.
고맙습니다.