Home 게시판 커뮤니티 Q&A get_the_category() 에 문제가 있는건가요?

4개 답변, 1 voice Last updated by Avatar of 082net082net 17 years, 9 months 전
  • 익명
    손님
    @
    #2633

    글을 쓰면서 혹시 082net 님께서 답변을 해주시지 않을까 생각했는데 역시나 이군요 😛

    이렇게 빨리 답해 주셔서 감사합니다. 전 the_category는 한 글에 속한 카테고리를 보여주고 get_the_category는 (ararry이길래) 전체를 다 보여주는줄 알았습니다 –;

    한번해볼께요. 🙂 감사합니다.

    익명
    손님
    @
    #2634

    <?php foreach(get_the_category() as $cat) { ?> 을 통해서 모든 category를 한개씩 불러드려서 작업을 하려 하는데, 이게 제일 마지막의 category만 불러오는군요

    예를 들어서 1-4 까지의 Category가 있는데 4만 가져오고 끝나는군요. foreach의 문제는 아닌거 같고 get_the_category의 문제인거 같습니다. WP2.1.3

    첫인덱스 페이지에서 카테고리별로 글을 몇개씩 뽑아서 정렬하려는데 참 힘드네요 –;

    혹시 아시는 분 계신가요

    익명
    손님
    @
    #2636

    <?php foreach(get_the_category() as $cat) { ?> 을 통해서 모든 category를 한개씩 불러드려서 작업을 하려 하는데, 이게 제일 마지막의 category만 불러오는군요

    예를 들어서 1-4 까지의 Category가 있는데 4만 가져오고 끝나는군요. foreach의 문제는 아닌거 같고 get_the_category의 문제인거 같습니다. WP2.1.3

    첫인덱스 페이지에서 카테고리별로 글을 몇개씩 뽑아서 정렬하려는데 참 힘드네요 –;

    혹시 아시는 분 계신가요

    Avatar of 082net082net
    Keymaster
    @082net
    #2635

    우선 get_the_category() 함수를 Loop 안에서 사용하셨는지 확인해 보시기 바랍니다.

    두번째로, get_the_category() 함수는 전체 카테고리를 불러오지 않고 각각의 글이 속한 카테고리를 가져올 때 사용합니다. 해당 글이 한 분류에만 속해 있다면 하나의 카테고리만 나타나는게 정상이겠죠.

    인덱스 페이지에서 몇개의 카테고리에 대해 지정된 카테고리에 해당하는 글만을 출력하려면…
    루프를 카테고리 수 만큼 반복시키고, 각 루프의 query 값에 카테고리 아이디 또는 이름을 필터링하도록 해 주면 될 것 같군요…

    카테고리별로 출력하는 방식을 다르게 하지 않는 다면… (카테고리 아이디 기준)

    <?php $front_cats = array(27,24,30); // 출력할 카테고리 아이디들
    foreach ($front_cats as $cat_id) {
       $posts = query_posts($query_string . "&cat=".$cat_id);
       if(have_posts()) :
          while (have_posts()) : the_post();
             ...
             포스트 출력 내용(제목, 내용, 날짜, 기타등등...
             ...
          endwhile;
       endif;
    } // endforeach

    // 아래는 위 카테고리에 속하지 않은 나머지 글들도 출력하는 내용입니다.
    // 필요치 않은 경우는 위 내용만으로 끝납니다.
    $posts = query_posts($query_string . 'cat=-27,-24,-30');
    if(have_posts()):
       while(have_posts)): the_post();
          ...위 카테고리에 속하지 않은 글들 출력(제목, 내용, 날짜, 기타등등...)
       endwhile;
    endif;
    ?>

    와 같은 식으로 하면 될 듯 합니다. 물론 각 카테고리에 속한 글이 없을 경우에 대비한 코드도 잘 맞추어 넣으셔야 할겁니다.

    맨 처음 페이지에서만 위 내용을 적용하려면 if(is_home()) 으로 적당히 구분지어 주셔야 합니다. 그렇지 않으면 Tag Archive 나 기타 index.php 파일을 경유해 출력되는 페이지에서 난감한 상황이 발생 할 수 있겠죠 😯

    이 외에도 다른 좋은 방법이 있을 수 있으니 이런 저런 방법으로 시도해 보세요 😉

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of 082net082net
    Keymaster
    @082net
    #2637

    우선 get_the_category() 함수를 Loop 안에서 사용하셨는지 확인해 보시기 바랍니다.

    두번째로, get_the_category() 함수는 전체 카테고리를 불러오지 않고 각각의 글이 속한 카테고리를 가져올 때 사용합니다. 해당 글이 한 분류에만 속해 있다면 하나의 카테고리만 나타나는게 정상이겠죠.

    인덱스 페이지에서 몇개의 카테고리에 대해 지정된 카테고리에 해당하는 글만을 출력하려면…
    루프를 카테고리 수 만큼 반복시키고, 각 루프의 query 값에 카테고리 아이디 또는 이름을 필터링하도록 해 주면 될 것 같군요…

    카테고리별로 출력하는 방식을 다르게 하지 않는 다면… (카테고리 아이디 기준)

    <?php $front_cats = array(27,24,30); // 출력할 카테고리 아이디들
    foreach ($front_cats as $cat_id) {
       $posts = query_posts($query_string . "&cat=".$cat_id);
       if(have_posts()) :
          while (have_posts()) : the_post();
             ...
             포스트 출력 내용(제목, 내용, 날짜, 기타등등...
             ...
          endwhile;
       endif;
    } // endforeach

    // 아래는 위 카테고리에 속하지 않은 나머지 글들도 출력하는 내용입니다.
    // 필요치 않은 경우는 위 내용만으로 끝납니다.
    $posts = query_posts($query_string . 'cat=-27,-24,-30');
    if(have_posts()):
       while(have_posts)): the_post();
          ...위 카테고리에 속하지 않은 글들 출력(제목, 내용, 날짜, 기타등등...)
       endwhile;
    endif;
    ?>

    와 같은 식으로 하면 될 듯 합니다. 물론 각 카테고리에 속한 글이 없을 경우에 대비한 코드도 잘 맞추어 넣으셔야 할겁니다.

    맨 처음 페이지에서만 위 내용을 적용하려면 if(is_home()) 으로 적당히 구분지어 주셔야 합니다. 그렇지 않으면 Tag Archive 나 기타 index.php 파일을 경유해 출력되는 페이지에서 난감한 상황이 발생 할 수 있겠죠 😯

    이 외에도 다른 좋은 방법이 있을 수 있으니 이런 저런 방법으로 시도해 보세요 😉

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
5 글 보임 - 1에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.