[워드프레스] 페이지에 요약글, 태그, 카테고리 기능 추가하기
상황
#워드프레스에서 포스트와 #페이지는 분명 다른 기능을 하지만, 페이지 형식으로 글을 쓰면서 가끔은 포스트에 있는 카테고리, 태그 등의 기능이 필요할 때가 있습니다.
그럴거면 굳이 왜 post 가 아닌 page 형식으로 글을 작성할까 하는 의문점이 생기지만, 어쨌든 제가 필요했기에 그 방법을 정리해 봅니다.
솔루션
아래는 페이지 형식의 글에 포스트 형식이 지원하는 몇 가지 기능을 아래 그림처럼 추가하는 방법을 정리한 것입니다.

아래 코드를 워드프레스 테마의 #functions.php 파일이나 플러그인에 추가하면 페이지에서 여러가지 추가 기능을 사용할 수 있습니다.
// 페이지에 요약글 기능 추가 add_post_type_support( 'page', 'excerpt' ); // 페이지에 태그 기능 추가하기 function _tag_for_page() { register_taxonomy_for_object_type( 'post_tag', 'page' ); } add_action('init', '_tag_for_page'); function _page_on_tag_page( $wp_query ) { if ( $wp_query->get('tag') ) $wp_query->set('post_type', 'any'); } add_action('pre_get_posts', '_page_on_tag_page'); // 페이지에 카테고리 기능 추가하기 function _cat_for_page() { register_taxonomy_for_object_type( 'category', 'page' ); } add_action('init', '_cat_for_page'); function _page_on_cat_page( $wp_query ) { if ( $wp_query->get('cat') ) $wp_query->set('post_type', 'any'); } add_action('pre_get_posts', '_page_on_cat_page');
코드가 뭔가 길어 보이긴 하는데 본인에게 필요한 부분만 가져다 쓰면 됩니다.
아래에서 각 코드가 어떤 기능을 하는지 살펴 보도록 합시다.
요약글 기능 추가
// 페이지에 요약글 기능 추가 add_post_type_support( 'page', 'excerpt' );
페이지에 #요약글 기능을 추가하는 것은 아주 간단히 코드 한 줄이면 됩니다.
#add_post_type_support 함수를 이용해 page 형식의 post type 에 #excerpt 기능을 추가하는 작업입니다.
태그 기능 추가
// 페이지에 태그 기능 추가하기 function _tag_for_page() { register_taxonomy_for_object_type( 'post_tag', 'page' ); } add_action('init', '_tag_for_page'); function _page_on_tag_page( $wp_query ) { if ( $wp_query->get('tag') ) $wp_query->set('post_type', 'any'); } add_action('pre_get_posts', '_page_on_tag_page');
_tag_for_page 함수는 #register_taxonomy_for_object_type 함수를 이용해 page 에 #post_tag 기능을 추가해주는 함수입니다.
그런데 단순히 페이지 형식의 글에 태그 기능을 추가 하는게 아니라 특정 태그를 포함한 글 목록에서도 해당 페이지를 보고 싶다면 그 아래의 _page_on_tag_page 함수까지도 추가해야 합니다. #pre_get_posts 에 액션을 추가해 글 목록을 불러 올 때 post_type 이 어떤 것(any)이 더라도 불러 올 수 있도록 하는 작업입니다.
카테고리 기능 추가
// 페이지에 카테고리 기능 추가하기 function _cat_for_page() { register_taxonomy_for_object_type( 'category', 'page' ); } add_action('init', '_cat_for_page'); function _page_on_cat_page( $wp_query ) { if ( $wp_query->get('cat') ) $wp_query->set('post_type', 'any'); } add_action('pre_get_posts', '_page_on_cat_page');
태그 기능을 추가 하는 것과 마찬가지 작업입니다. _cat_for_page 함수에서 page 에 category 기능을 추가해주고, #query 가 cat 일 때 #post_type 을 any 로 지정해 페이지도 특정 카테고리 글 목록에서 표시 될 수 있도록 합니다.
끝.