[워드프레스] 카테고리의 링크를 가져 오는 방법 | get_category_link()
상황
워드프레스 테마를 만들 때, 특정 포스트가 어떤 카테고리에 속해 있는지 표시해 주기 위해서 아래와 같이 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
로 가져와야 함을 기억합시다.
워드프레스 내장함수가 잘 되어 있어서, 생각보다 상상한 것을 구현하는 방법은 어렵지 않네요.
끝.
참고자료
- get_category_link(), WordPress Developer Resources
- get_the_category(), WordPress Developer Resources