게시판 리스트 상단에 가장 조회수가 많은 글 표시하기

안녕하세요. Kboard 게시판 리스트에 대한 질문입니다.

리스트 상단에 가장 조회수가 많은 글 한개와 가장 최근글 한개를 표시하고 싶습니다.

제가 초보자라 어디부터 수정해야 할지 잘 몰라서 질문드립니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 스킨의 list.php 파일에 프로그램을 새로 작성해주셔야 할 듯합니다.

    음.. 초보분이 직접하긴 매우 어려울거에요;;

     

    list.php 파일에서 아래 코드를 테스트 해봐주세요~

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

    `board_id`='1' 이쪽에서 숫자는 게시판 ID값입니다. 적절히 수정해주세요.

    `view` DESC 이건 view를 기준으로 내림차순으로 정렬하라는 뜻입니다.

    LIMIT 1 이렇게 해주시면 하나의 레코드만 가져올 수 있습니다.

  • 안녕하세요?

    위의 코드를 테스트해봤는데요, 위의 코드에서 get_row를 사용하면 여러 개를 지정해도 하나만 불러오네요.  대신에 get_results를 사용하면 여러 개를 불러옵니다. 

    get_results를 사용하고 print_r(..)을 통해 출력해보면

    위와 같이 여러 개가 출력되고, get_row를 사용하면 데이터가 하나만 표시됩니다.

    하지만 get_results를 사용할 경우 개별 데이터(글 제목 등)를 top_content->~ 방식으로 불러올 수가 없네요(get_row일 때는 top_content->... 형식으로 정상 작동)....

    이 경우 어떻게 Loop 시키고(foreach(...)나 while($content = $list->...) 형식으로 제대로 안 되네요)개별 데이터는 어떤 방식으로 불러와야 하는지 조언 부탁드립니다.

     

    감사합니다.

  • Sky7님 우선 $wpdb 메소드에 설명을 드리면요.

    $wpdb->get_row() 또는 $wpdb->get_results() 이건 워드프레스 기능입니다.

    get_row 이건 하나의 레코드만 가져오는 메소드구요, get_results 이건 array로 여러 레코드를 가져오는 메소드입니다.

    중요한건 get_row 이런 쿼리로 여러 레코드를 가져온다해도 결과적으로는 하나의 레코드만 전달합니다.

    그리고 get_results 이건 하나의 레코드만 가져오는 쿼리여도 결과적으로는 무조건 array로 가져옵니다.

    두 메소드 사용법은 전혀다릅니다^^

     

    $top_content = new KBContent();
    $results = $wpdb->get_results(...);
    foreach($results as $key=>$row){
         $top_content->initWithRow($row);
         echo $top_content->title;
    }

     

    get_results로 레코드를 가져올때는 위처럼 foreach를 사용해보세요^^

  • 친절한 설명 대단히 감사합니다^^

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기