검색 결과에 표시하는 포스트 타입 지정하기

기본 검색 결과에는 포스트와 정적 페이지, 사용자정의 포스트타입의 콘텐츠가 표시된다. 이 가운데 특정 콘텐츠만 검색 결과로 표시하고 싶은 경우 functions.php에 다음과 같이 지정을 추가해서 $query->set(‘post_type’,~)에서 검색 대상으로 하고 싶은 포스트 타입의 이름을 지정한다. 예를 들어 ‘post’라고 지정하면 포스트 기사만을 검색 대상으로 할 수 있다. 정적 페이지의 경우에는 ‘page’라고 지정한다. 복수의 포스트 타입을 검색 대상으로 하는 경우에는 array()로 지정한다. 예를 들어 array(‘post’,’news’)라고 지정하면 포스트 기사와 앞에서 작성한 ‘news’ 포스트 타입을 검색 대상으로 할 수 있다.

또한 사용자정의 포스트 타입은 register_post_type()의 exclude_from_search 파라미터로 검색 결과를 출력하지 않도록 지정할 수 있다. 예를 들어 ‘news’ 포스트 타입을 출력하지 않는 경우 exclude_from_search 파라미터를 추가해서 값을 ‘true’라도 지정한다.

function.php

포스트 기사만을 검색 대상으로 하는 경우

(생략)

//검색 대상
function mysearch($query) {
if (is_search()) {
$query->set(‘post_type’, ‘post’);
}
return $query;
}
add_filter(‘pre_get_posts’,’mysearch’);

?>

포스트 기사와 ‘news’ 포스트 타입을 검색 대상으로 하는 경우

(생략)

//검색 대상
function mysearch($query) {
if (is_search()) {
$query->set(‘post_type’, array(‘post’, ‘news’));
}
return $query;
}
add_filter(‘pre_get_posts’,’mysearch’);

?>

‘news’ 포스트 타입을 검색 결과에 포함하지 않도록 지정

(생략)
//뉴스 기사의 포스트 타입
register_post_type(
‘news’,
array(
‘label’ => ‘NEWS’,
‘hierarchical’ => false,
‘public’ => true,
‘has_archive’ => true,
‘supports’ => array(
‘title’,
‘editor’
),
‘exclude_from_search’=> true

)
);
(생략)

출처: 바꾸면서 배우는 워드프레스 디자인

답글 남기기