메인페이지에 추천글/많이 본글 리스트 띄우

안녕하세요

 

현재 메인페이지에 최신글 모아보기 기능을 사용하여 추천글/ 많이 본글 리스트를 띄우고 있습니다.

 

최신글 모아보기 기능을 너무나도 잘 사용하고 있는데, 한가지 수정하고자 하는 내용이 있어 문의 드립니다.

최신글 모아보기는 전체 기간 동안 가장 추천 수가 많은 게시글, 가장 조회수가 많은 게시글을 보여주는데요

이로인해 오랜 기간 동안 같은 게시글이 리스트에 머물러 있습니다.

 

혹시 최신글 모아보기에 날짜 제한을 걸 수 있을까요? 예를 들어, 최근 한달 기간동안 가장 추천 수가 많았던 게시글 리스트가 되도록 수정하는 형식으로 될 수 있을지 궁금합니다.

 

구글 검색을 해보았는데 Kboard 위젯을 사용하고 function.php에 아래 코드를 사용하면 될 것으로 보이는데...

혹시 위젯을 메인페이지에 숏코드 형식으로 삽입할 수 있나요? 안된다면 어떤식으로 메인 페이지에 기간 제한이 적용된 추천글 게시글 리스트를 포함시킬 수 있을까요...?

add_filter('kboard_widget_list_where', 'my_kboard_widget_list_where', 10, 5);
function my_kboard_widget_list_where($where, $value, $limit, $exclude, $with_notice){
	// 추천글
	if($value == 'vote'){
		$where .= " AND `date` >= date_add(now(), interval -1 week)";
	}
	
	// 인기글
	if($value == 'view'){
		$where .= " AND `date` >= date_add(now(), interval -1 week)";
	}
	return $where;
}

 

항상 좋은 답변 주시는 점 감사 드립니다.

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

    이전 댓글에 안내해드린 코드를 kboard_list_orderby 필터 쪽에도 적용해주셔야 합니다.

    올려주신 코드 중 아래의 코드를

    add_filter('kboard_list_orderby', 'week_best_kboard_list_orderby', 10, 3);
    function week_best_kboard_list_orderby($orderby, $board_id, $content_list){
    	
    	if($board_id == '15'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }

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

    add_filter('kboard_list_orderby', 'week_best_kboard_list_orderby', 10, 3);
    function week_best_kboard_list_orderby($orderby, $board_id, $content_list){
    	
    	if($board_id == '15' || in_array('15', $board_id)){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }

    다른 최신글 모아보기도 사용하신다면 위의 코드처럼 적용해보세요.

    고맙습니다.

  • 안녕하세요~^^

    KBoard 플러그인으로 워드프레스 일간, 주간, 월간 베스트 게시판을 만드는 방법은

    아래의 링크를 참고해보세요.

    워드프레스 일간, 주간, 월간 베스트 게시판 만들기

     

    KBoard 위젯 플러그인을 숏코드로 사용하시려면

    다른 플러그인을 설치해서 위젯을 숏코드로 사용해주셔야 할 듯합니다.

    아래 관련 링크를 참고해보시겠어요?

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

    고맙습니다.

  • 감사합니다! 큰 도움이 되었습니다.

    주간베스트게시판과 월간베스트게시판을 만들었습니다. 게시판이 정상작동 하는 것도 확인하였습니다.

    문제는 이 게시판에 불러온 게시글들을 메인페이지에 출력하는데 어려뭄이 있습니다.

    기존에 제가 메인 페이지에 게시글을 불러올 때 사용하던 방식은 플러그인의 최신글 모아보기 기능을 사용했는데 주간베스트 게시판의 글들은 최신글 모아보기 기능으로 불러와지지 않는 것 같습니다.

    혹시나 제가 어떤 코드를 추가해서 최신글 모아보기 기능이 주간베스트 게시판과 월간베스트 게시판에도 적용이 가능하게 할 수 있을까요?

     

    제가 functions.php 파일에 입력한 코드는 아래와 같습니다.

     

    //Wekkly Hot Topic
    add_filter('kboard_list_where', 'week_best_kboard_list_where', 10, 3);
    function week_best_kboard_list_where($where, $board_id, $content_list){
    
    	if($board_id == '15'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$today = date('Ymd', current_time('timestamp'));
    		$first = date('w', current_time('timestamp'));
    		$date = date('Ymd000000', strtotime("{$today} - {$first} days")); // 이번주 시작 날짜 기준
    		
    		$where = "`date`>='{$date}' AND `board_id`!='12' AND `board_id`!='9' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    	}
    	
    	return $where;
    }
    
    add_filter('kboard_list_orderby', 'week_best_kboard_list_orderby', 10, 3);
    function week_best_kboard_list_orderby($orderby, $board_id, $content_list){
    	
    	if($board_id == '15'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }
    
    add_filter('kboard_allowed_board_id', 'weekly_kboard_allowed_board_id', 10, 2);
    function weekly_kboard_allowed_board_id($allowed_board_id, $board_id){
    	if($allowed_board_id == '15'){
    		$allowed_board_id = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');
    	}
    	return $allowed_board_id;
    }
    
    //Monthly Hot Topic
    add_filter('kboard_list_where', 'month_best_kboard_list_where', 10, 3);
    function month_best_kboard_list_where($where, $board_id, $content_list){
    	
    	if($board_id == '16'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$date = date('Ym01000000', current_time('timestamp')); // 이번달 시작 날짜 기준
    		
    		$where = "`date`>='{$date}' AND `board_id`!='12' AND `board_id`!='9' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    	}
    	
    	return $where;
    }
    
    add_filter('kboard_list_orderby', 'month_best_kboard_list_orderby', 10, 3);
    function month_best_kboard_list_orderby($orderby, $board_id, $content_list){
    	
    	if($board_id == '16'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }
    
    add_filter('kboard_allowed_board_id', 'monthly_kboard_allowed_board_id', 10, 2);
    function monthly_kboard_allowed_board_id($allowed_board_id, $board_id){
    	if($allowed_board_id == '16'){
    		$allowed_board_id = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');
    	}
    	return $allowed_board_id;
    }

     

  • 안녕하세요.

    KBoard 플러그인 최신글 모아보기에

    kboard_list_where 필터를 적용할 경우에는 $board_id가 배열로 적용됩니다.

    $board_id == '15' 부분을 $board_id == '15' || in_array('15', $board_id)로 교체해서 확인해보시겠어요?

    in_array('15', $board_id) 쪽의 게시판 id(15)는

    최신글 모아보기로 적용한 게시판 중 하나만 적용해보세요.

    게시판 id가 16인 쪽에도 위와 같이 적용해보시겠어요?

    고맙습니다.

  • 감사합니다 이제 최신글 모아보기에서 글이 불러와집니다!

    다만 불러와진 글이 최신글 모아보기의 정렬 순서 설정에 의해 다시 정렬되어 버립니다.

    제가 정렬하고 싶었던 순서는 (view + vote *10) DESC 였는데 최신글 모아보기는 불러온 글들을 다시 최신순으로 정렬합니다.

     

    혹시 최신글 불러오기에 custom order by 를 삽입할 수 있을까요?

    아니면 최신글 모아보기가 order by를 설정하고 난 이후에 제가 원하는 순서 "view + vote*10 을 적용할 수 있는 방법이 있을까요?

     

    점점 문제하 해결되어지는 것 같습니다. 항상 좋은 답변 주시는 점 감사 드립니다. 

  • 안녕하세요.

    KBoard 최신글 모아보기 쪽 정렬도 kboard_list_orderby 필터로 수정하실 수 있습니다.

    kboard_list_orderby 필터 쪽에도 이전 댓글에 안내해드린 코드를 적용하셨는지 확인해보시겠어요?

    고맙습니다.

  • 제가 최신글 모아보기 쪽에 kboard_list_orderby 필터를 적용 못 하는 것 같습니다.

     

    혹시 최신글 모아보기에 kboard_list_orderby 필터를 적용하려면 어떻게 해야할까요?

     

    잘 알려주시는데 제가 모자라서 이해를 못 하는 것 같습니다. 제가 짠 코드는 아래와 같은데 혹시 어떤 부분이 잘못되었는지 조언해주실 수 있을까요?

     

    혹시나 싶어 제가 사용하는 최신글 모아보기 사진도 함께 보내 드립니다.

    https://imgur.com/2fqZpSI 

     

    **최신글 모아보기 쪽 정렬 코드

    // 최신글 orderby 필터
    add_filter('kboard_list_orderby', 'latest_list_orderby', 10, 3);
    function latest_list_orderby($orderby, $latestview_uid, $content_list){
    	
    	if($latestview_uid == '10'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }
    

     

     

     

    **현재까지 작동하는 코드

    //Wekkly Hot Topic
    add_filter('kboard_list_where', 'week_best_kboard_list_where', 10, 3);
    function week_best_kboard_list_where($where, $board_id, $content_list){
    	//if(is_user_logged_in() && $board->id != '7'){ 
    
    	if($board_id == '15' || in_array('15', $board_id)){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$today = date('Ymd', current_time('timestamp'));
    		$first = date('w', current_time('timestamp'));
    		$date = date('Ymd000000', strtotime("{$today} - {$first} days")); // 이번주 시작 날짜 기준
    		
    		$where = "`date`>='{$date}' AND `board_id`!='12' AND `board_id`!='9' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    	}
    	
    	return $where;
    }
    
    add_filter('kboard_list_orderby', 'week_best_kboard_list_orderby', 10, 3);
    function week_best_kboard_list_orderby($orderby, $board_id, $content_list){
    	
    	if($board_id == '15'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }
    
    add_filter('kboard_allowed_board_id', 'weekly_kboard_allowed_board_id', 10, 2);
    function weekly_kboard_allowed_board_id($allowed_board_id, $board_id){
    	if($allowed_board_id == '15'){
    		$allowed_board_id = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');
    	}
    	return $allowed_board_id;
    }
    
    //Monthly Hot Topic
    add_filter('kboard_list_where', 'month_best_kboard_list_where', 10, 3);
    function month_best_kboard_list_where($where, $board_id, $content_list){
    	
    	if($board_id == '16'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$date = date('Ym01000000', current_time('timestamp')); // 이번달 시작 날짜 기준
    		
    		$where = "`date`>='{$date}' AND `board_id`!='12' AND `board_id`!='9' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    	}
    	
    	return $where;
    }
    
    add_filter('kboard_list_orderby', 'month_best_kboard_list_orderby', 10, 3);
    function month_best_kboard_list_orderby($orderby, $board_id, $content_list){
    	
    	if($board_id == '16'){ // 실제 적용될 게시판의 ID값으로 변경해주세요.
    		$orderby = "(`view`+`vote`*10) DESC"; // , `date` DESC 조회수와 추천수를 더한 값을 기준으로 정렬
    	}
    	
    	return $orderby;
    }
    
    add_filter('kboard_allowed_board_id', 'monthly_kboard_allowed_board_id', 10, 2);
    function monthly_kboard_allowed_board_id($allowed_board_id, $board_id){
    	if($allowed_board_id == '16'){
    		$allowed_board_id = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14');
    	}
    	return $allowed_board_id;
    }

     

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