[워드프레스] 카테고리의 링크를 가져 오는 방법 | get_category_link()

folder프로그래밍

query_stats3

상황

워드프레스 테마를 만들 때, 특정 포스트가 어떤 카테고리에 속해 있는지 표시해 주기 위해서 아래와 같이 get_the_category 함수를 이용해 정보를 표시합니다.

$cat = get_the_category();
echo '<span>Category: ' . $cat[0]->name . '</span>';

여기서 편의성을 위해 카테고리 이름을 클릭 했을 때, 해당 카테고리의 아카이브 페이지, 즉, 해당 카테고리에 속한 포스트들의 목록을 보여주는 페이지로 이동 하고 싶다면 어떻게 해야 할 까요.

솔루션

일단 당연하게도 카테고리의 이름을 a 태그로 감싸줘서 링크로 만들어줘야 합니다.

$cat = get_the_category();
echo '<span>Category: <a href="">' . $cat[0]->name . '</a></span>';

그 다음 어디선가 그 카테고리 아카이브 페이지로 연결되는 링크를 가져와서 a 태그의 href 속성에다가 넣어줘야죠? 이 상황에서 사용할 수 있는게 워드프레스 내장 함수인 get_category_link 함수입니다.

워드프레스의 소개 페이지를 보니 해당 함수의 인수로 int 또는 object 를 넣을 수 있다고 하네요. 다시 말해서 해당 카테고리의 term_id 를 넣어주거나 그냥 그 카테고리 object를 그대로 넣으면 알아서 링크를 반환해준다는 뜻입니다.

사용법이 간단하니까 위 코드에 링크를 넣어 볼까요?

$cat = get_the_category();
echo '<span>Category: <a href="' . get_category_link( $cat[0] ) . '">' . $cat[0]->name . '</a></span>';

위 코드에서 href 속성 값으로 $cat[0] 를 넣어 준 것이 보이나요? 참고로 get_the_category 함수를 통해 얻은 카테고리 값은 배열 형태로 리턴 되기 때문에 반드시 그 중 몇 번째 항목인지 특정해서 넣어줘야 합니다. 그래서 $cat 가 아닌 $cat[0] 로 넣어 준 것이죠.

term_id, 즉, 카테고리의 고유 ID를 넣는 방법은 아래와 같습니다.

$cat = get_the_category();
echo '<span>Category: <a href="' . get_category_link( $cat[0]->term_id ) . '">' . $cat[0]->name . '</a></span>';

포스트 오브젝트의 ID 는 그냥 $post->ID 라고 가져 올 수 있는 것에 비해, 카테고리나 태그의 경우 ID를 가져오기 위해 term_id로 가져와야 함을 기억합시다.

워드프레스 내장함수가 잘 되어 있어서, 생각보다 상상한 것을 구현하는 방법은 어렵지 않네요.

끝.

참고자료

    댓글 남기기