[워드프레스] 커스텀 포스트 타입 글을 홈(전면 페이지)에 표시하기

Last Updated: 2016년 01월 07일 | | 댓글 남기기

커스텀 포스트 타입 글 목록을 홈(전면 페이지)에 표시하기

이 글에서 커스텀 포스트 타입(사용자 정의 글 유형)을 이용하여 "영화 리뷰" 글 유형을 만드는 방법을 살펴보았습니다. 포트폴리오 등과 같이 새로운 형식의 글 유형을 만드는 경우 사용자 정의 글 유형을 사용하면 유용합니다. 기본적으로 사용자 정의 글은 홈(전면 페이지)에 표시되지 않습니다.

사용자 정의 글 유형을 첫 페이지(전면 페이지)에 표시하려면 pre_get_posts 후크를 사용하면 됩니다. (pre_get_posts 액션 후크에 대한 자세한 내용은 워드프레스 Codex 페이지를 참고해보시기 바랍니다.)

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'your_Custom_Post_Type' ) );
return $query;
}

위와 같은 코드를 함수 파일에 추가하면 'post' 유형과 'your_Custom_Post_Type'이 전면 페이지(홈)에 표시됩니다. 만약 모든 글 유형(post, page 포함)을 표시하고 싶은 경우에는 $query->set... 라인을 다음 라인으로 대체하면 됩니다.

$query->set( 'post_type', 'any' );

커스텀 포스트 타입을 카테고리 아카이브 페이지에 표시하기

기본적으로 워드프레스 커스텀 포스트 타입 글은 카테고리나 태그 아카이브 페이지에 표시되지 않습니다. 다음 코드를 테마의 함수 파일에 추가하면 사용자 정의 글 유형이 카테고리 페이지와 태그 페이지에 표시됩니다.

function themeprefix_show_cpt_archives( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
'post', 'nav_menu_item', 'your_Custom_Post_Type' ));
return $query;
}
}
add_filter( 'pre_get_posts', 'themeprefix_show_cpt_archives' );
// Source: WP Beaches

커스텀 포스트 타입이 워드프레스 검색 결과에 표시되도록 설정하기

마찬가지로 사용자 정의 글 유형은 검색 결과에 표시되지 않습니다. 다음과 같은 함수를 추가하여 WordPress에서 커스텀 포스트 타입을 쿼리하여 검색되도록 할 수 있습니다.

add_filter( 'pre_get_posts', 'tgm_io_cpt_search' );
function tgm_io_cpt_search( $query ) {

if ( $query->is_search ) {
$query->set( 'post_type', array( 'post', 'movies', 'products', 'portfolio' ) );
}
return $query;
}
// Source

플러그인을 사용할 경우 Advanced Custom Post Search와 같은 플러그인을 테스트해볼 수 있습니다.

기본 워드프레스 검색과 별도의 검색 폼을 만들고 싶다면 이 stackexchange 글의 내용을 참고해보시기 바랍니다.

참고:


댓글 남기기

Leave a Comment