[워드프레스] 페이지에 요약글, 태그, 카테고리 기능 추가하기
상황
[[워드프레스]]에서 포스트와 [[페이지]]는 분명 다른 기능을 하지만, 페이지 형식으로 글을 쓰면서 가끔은 포스트에 있는 카테고리, 태그 등의 기능이 필요할 때가 있습니다.
그럴거면 굳이 왜 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 로 지정해 페이지도 특정 카테고리 글 목록에서 표시 될 수 있도록 합니다.
끝.
댓글 남기기