안녕하세요
이전에도 문의를 드린적이 있는데 검색을 하다보니 아래와 같은 글을 찾아서 혹시 적용가능한지 문의드립니다.
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;
}
안녕하세요.
이전 댓글에 안내해드린 코드를 적용하시면
말씀하신 것처럼 기간과는 상관없이 조회수가 많은 순으로 게시글을 표시합니다.
만약, 기간을 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 파일입니다.
고맙습니다.
안녕하세요
항상 친절한 답변 진심으로 감사드립니다.
위의 코드를 적용하면 기간제한없이 조회수가 많은 아주 오래된 게시글을 위로 배치하는데 맞는지요?
혹시 기간을 1주일로 설정 가능한가요?
다시한번 감사드립니다.
안녕하세요~^^
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
고맙습니다.