일간 베스트 게시판 적용 건

안녕하세요.

코스모스팜 무제한 라이센스 구매후 적용 작업중입니다.

메인에 동영상 게시판 썸네일을 구축했는데,

작업해주시는 분이 KBoard의 최신글 모아보기 생성으로 만든게 아니라

db에서 뽑아오는걸로 KBoard 코드 작업을 해주셨는데, front-page.php 소스보면

kboard_board_content WHERE board_id >= 11 order by uid desc limit ";

이렇게 되어있는데,

아래 방법대로 functions.php 에서

 

add_filter('kboard_list_where', 'today_best_kboard_list_where', 10, 3);
function today_best_kboard_list_where($where, $board_id, $content_list){
 
 if($board_id == '11'){ // 실제 적용될 게시판의 ID값으로 변경해주세

요.
  $date = date('Ymd000000', current_time('timestamp')); //

오늘 0시 기준
  
  $where = "`date`>='{$ate}' AND `parent_uid`='0' AND

`notice`='' AND (`status`='' OR `status` IS NULL OR

`status`='pending_approval')";
 }
 
 return $where;
}

add_filter('kboard_list_orderby', 'today_best_kboard_list_orderby', 10,

3);
function today_best_kboard_list_orderby($orderby, $board_id,

$content_list){
 
 if($board_id == '11'){ // 실제 적용될 게시판의 ID값으로 변경해주세

요.
  $orderby = "(`view`+`vote`) DESC, `date` DESC"; // 조회수

와 추천수를 더한 값을 기준으로 정렬
 }
 
 return $orderby;
}

이 부분 추가해주면 구현될까요?

 

https://www.cosmosfarm.com/threads/document/28448

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    KBoard 게시판, KBoard 최신글 모아보기, KBoard 최신글 기능이 아닌

    별도로 코드를 추가하신 거라면 KBoard 플러그인의 액션과 필터가 적용되지 않습니다.

    필터를 사용할 수 없는 상황이라면

    아래의 코드를 활용해보시겠어요?

    global $wpdb;
    $board_id = '1'; // 실제 적용될 게시판의 ID값으로 변경해주세요.
    $date = date('Ymd000000', current_time('timestamp')); //오늘 0시 기준
    $results = $wpdb->get_results("SELECT `{$wpdb->prefix}kboard_board_content`.`uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE `board_id`='{$board_id}' AND `date`>='{$date}' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') ORDER BY (`view`+`vote`) DESC, `date` DESC LIMIT 0,10");

    위의 코드에서 $board_id = '1' 부분은 실제 게시판 id로 적용해보세요.

    고맙습니다.

  • 감사합니다^^ 위 기능을 functions.php 에 추가하면 될까요, 아니면 front-page.php 에 추가하면 될까요? 

  • 해당 코드는 front-page.php 파일에

    데이터베이스 쿼리문 쪽에 활용해주셔야 할 듯합니다.

    고맙습니다.

  • 감사합니다^^

  • 감사합니다~   2018.12.31 11:34 에 알려주신 위 코드를 활용해서 1일마다 갱신해서 가져오는게 아니라 6시간마다 갱신해서 최신글 모아보기에 적용할수 있을까요?

  • 안녕하세요.

    오늘 등록된 게시글이 아닌 현재 시간으로부터 6시간 전까지 등록된 게시글을 표시하시려는 지요?

    기존 아래의 코드 대신

    $date = date('Ymd000000', current_time('timestamp')); //오늘 0시 기준

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

    $date = date('YmdHis', strtotime('-6 hour', current_time('timestamp'))); // 6시간 전

    고맙습니다.

  • 6시간마다 추출하는건 front-page가 아니라 https://xion.kr/?page_id=226 서브페이지에 안에 숏코드로 만든 탭메뉴 안에 최신글 모아보기 소스 삽입한 곳에 구현하려고 하는데('요즘 뜨는'이라는 탭메뉴에) 이때는 이 코드를 어디에 넣어줘야 할까요?

  • 안녕하세요.

    숏코드를 만드신 후에 해당 탭 내용 쪽에 숏코드를 추가해주셔야 할 듯합니다.

    플레이 비디오 스킨을 기준으로 예제 숏코드를 작성해봤습니다.

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

    아래의 코드를 추가해보세요.

    add_shortcode('kboard_board_six_hours_list', 'kboard_board_six_hours_list');
    function kboard_board_six_hours_list(){
    	global $wpdb;
    	
    	$board_id = '1'; // 실제 적용될 게시판의 ID값으로 변경해주세요.
    	$date = date('YmdHis', strtotime('-6 hour', current_time('timestamp'))); // 6시간 전
    	
    	$router = new KBRouter();
    	$router->process();
    	$board_url = $router->getBoardURL($board_id);
    	$url = new KBUrl();
    	
    	$list = new KBContentList($board_id);
    	$list->setDateRange($date, '');
    	$list->getList();
    	
    	$html = '';
    	ob_start();
    	?>
    	<div id="kboard-play-video-latest">
    		<ul class="kboard-list">
    			<?php while($content = $list->hasNext()):?>
    			<li class="kboard-list-item<?php if($content->uid == kboard_uid()):?> kboard-selected<?php endif?>">
    				<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toStringWithPath($board_url)?>#kboard-document">
    					
    					<?php if($content->getThumbnail(330, 160)):?>
    						<div class="kboard-list-thumbnail" style="background-image:url(<?php echo $content->getThumbnail(330, 160)?>)"></div>
    					<?php elseif($content->option->youtube_id):?>
    						<div class="kboard-list-thumbnail" style="background-image:url(<?php echo $content->option->youtube_thumbnail_url?>)"></div>
    					<?php elseif($content->option->vimeo_id):?>
    						<div class="kboard-list-thumbnail" style="background-image:url(<?php echo $content->option->vimeo_thumbnail_url?>)"></div>
    					<?php else:?>
    						<div class="kboard-list-thumbnail"></div>
    					<?php endif?>
    					
    					<div class="kboard-list-title kboard-ell">
    						<?php echo $content->title?>
    						<?php echo $content->getCommentsCount()?>
    					</div>
    					
    					<div class="kboard-video-info">
    						<span><?php echo get_avatar($content->member_uid, 16, '', $content->member_display, array('class'=>'kboard-avatar'))?> <?php echo $content->member_display?></span>
    						<div class="kboard-ell">
    							<span><?php echo __('Views', 'kboard')?> <?php echo number_format(intval($content->view))?></span>
    							<span>·</span>
    							<span><?php echo date('Y-m-d', strtotime($content->date))?></span>
    						</div>
    					</div>
    					
    					<div class="kboard-selected-background">
    						<div class="kboard-selected-wrap">
    							<div class="kboard-selected-table">
    								<div class="kboard-selected-cell">
    									<?php echo __('Play', 'kboard')?>
    								</div>
    							</div>
    						</div>
    					</div>
    				</a>
    			</li>
    			<?php endwhile?>
    		</ul>
    	</div>
    	<?php
    	$html = ob_get_clean();
    	
    	return $html;
    }

     

    탭 메뉴 쪽에 아래의 숏코드를 추가해보시겠어요?

    [kboard_board_six_hours_list]

    고맙습니다.

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