워드프레스 사이트에서 케이보드(Kboard) 게시판을 설치하여 운영하는 경우 검색 위젯이나 검색 바에서 검색하면 케이보드 게시판 글도 검색이 됩니다. 워드프레스 기본 검색 기능에서 케이보드 게시글만 검색되도록 하거나 케이보드 게시글이 검색되지 않도록 테마 함수 파일에 코드를 추가할 수 있습니다.
경우에 따라 케이보드 게시글이 검색 기능에서 검색이 안 되는 경우가 있을 수 있습니다. 그런 문제가 발생하는 경우 Kboard 개발자는 kboard_list_where 필터를 사용하는 방법을 안내하고 있습니다.
워드프레스 케이보드 게시판 통합 검색 기능
워드프레스 기본 검색 기능에서 Kboard 게시글만 검색되도록 하고 싶은 경우 Cosmosfarm 포럼 글 "통합 검색할 순 없나요?"에 제시된 다음 코드를 차일드 테마의 함수 파일에 추가할 수 있습니다.
add_filter('pre_get_posts', 'kboard_pre_get_posts');
function kboard_pre_get_posts($query){
if($query->is_search){
$query->set('post_type', array('kboard')); // 케이보드만 검색되도록 하기
return $query;
}
FTP/SFTP에 접속하여 테마 함수 파일(functions.php)에 위의 코드를 입력하여 원하는 대로 작동하는지 테스트해보시기 바랍니다.
특정 페이지의 검색 상자에서 검색 시 모든 케이보드 게시글을 검색하는 통합 검색 기능을 추가하려는 경우에는 검색 폼을 숏코드로 만들어 해당 페이지에 추가하고 전달된 GET 파라미터를 검사하여 조건에 맞는 경우에만 검색 범위를 제한하는 코드를 차일드 테마의 함수 파일에 추가하는 것을 고려할 수 있습니다.
예를 들어, 페이지 ID가 45인 페이지에서만 케이보드 게시판의 전체 게시글을 검색하도록 하고 싶은 경우 다음 코드를 차일드 테마의 함수 파일에 추가합니다.
function kboard_search_form_shortcode() {
$form_html = '<form role="search" method="get" action="' . home_url( '/' ) . '">
<input type="hidden" name="from_page" value="45">
<input type="search" name="s" placeholder="Search kboard posts">
<button type="submit">Search</button>
</form>';
return $form_html;
}
add_shortcode('kboard_search_form', 'kboard_search_form_shortcode');
이제 [kboard_search_form] 숏코드를 검색 폼을 표시할 페이지나 엘리멘터 등의 페이지 빌더 편집기에 추가합니다.
그리고 다음 코드를 차일드 테마의 함수 파일에 추가합니다.
add_filter('pre_get_posts', 'kboard_pre_get_posts');
function kboard_pre_get_posts($query){
if($query->is_search && isset($_GET['from_page']) && $_GET['from_page'] == '45'){
$query->set('post_type', array('kboard'));
}
return $query;
}
이제 해당 페이지에서 검색하면 케이보드 게시글만 검색이 될 것입니다.
케이보드 게시글이 검색이 안 되는 경우
테마나 플러그인 문제인지 몰라도 Hello 테마와 Elementor 페이지 빌더가 설치된 사이트에서 케이보드 게시판 글들이 검색되지 않는 케이스를 접한 적이 있습니다. 테스트 사이트에 동일한 테마와 플러그인을 설치하여 테스트해보니 케이보드 게시글 검색이 잘 되었습니다. 아마 특정 상황에서 어떤 문제 때문에 그런 현상이 발생할 수 있는 것 같습니다.
이 경우 케이보드 포럼 글 "KBoard 게시판 검색 기능 추가에 관하여"에서 Search & Filter 플러그인을 사용하거나 다음과 같은 방법을 제시하고 있습니다.
그리고 PHP 프로그래밍이 가능하시면, KBoard(케이보드) 자체 검색 프로그램을 손보면 통합 검색이 가능하겠습니다.
kboard_list_where 필터를 사용해보세요.
필터에 대한 설명은 아래 페이지를 참고해주세요.
http://www.cosmosfarm.com/products/kboard/hooks
워드프레스 기본 검색 기능에서 케이보드 게시판 글이 검색되지 않으면 Search & Filter 플러그인을 사용해도 검색이 안 될 가능성이 있습니다.
Search & Filter 플러그인은 직관적이지 않아서 초보자가 사용하기에는 약간 어려울 수 있습니다.

이 플러그인을 사용하는 경우 숏코드로 검색 폼을 표시할 수 있습니다. 예를 들어, 다음과 같은 숏코드를 추가하면 글, 페이지, Kboard 게시글이 검색됩니다.
[searchandfilter fields="search" post_types="post,page,kboard" headings="Search"]
저는 이 방법이 작동하지 않아서 kboard_list_where 필터를 사용하여 PHP 코드를 만들어서 워드프레스 기본 검색 기능에서 KBoard 게시글만 검색되도록 바꾸는 것을 시도했습니다. 또한, Hello 테마에 search.php 파일을 추가하여 검색 결과 페이지를 커스텀했습니다.

이상하게 페이지네이션 기능이 작동하지 않아서 Load More 버튼을 누르면 Ajax 방식으로 검색 결과가 표시되도록 했습니다.
이런 방법으로 코드를 만드는 작업이 만만치 않고 경우에 따라 검색 결과 페이지 템플릿을 막코딩으로 만들어야 하기 때문에 그다지 바람직하지 않은 것 같습니다. 케이보드 게시글이 검색되지 않는 상황에서 이 방법으로 고려해볼 수 있습니다.
엘리멘터 프로에서 검색 결과 페이지 템플릿 만들기
Elementor Pro를 사용하는 경우 검색 결과(Search Results) 페이지 템플릿을 만들 수 있으며, 케이보드 등 커스텀 포스트 타입 글을 검색 결과에 표시할 수 있습니다. (하지만 기본 워드프레스 검색 기능에서 Kboard 게시글이 검색되지 않으면 엘리멘터 검색 결과 페이지에서도 표시되지 않을 수 있습니다.)
테마 빌더에서 아카이브 템플릿을 로드한 다음, Preview Dynamic Content as 옵션에 Search Results를 선택하고 표시 조건(Display Conditions)에서 Search Results를 지정하면 검색 결과 페이지 템플릿 기능을 합니다.

검색 결과 페이지에서 Search Results for: 문구를 한국어로 변경할 수 있습니다.
Query에서 Kboard 등 커스텀 포스트 타입 글 유형을 선택하면 해당 포스트 타입 게시글이 검색 결과에 표시됩니다.

만약 검색 결과 페이지에 표시되지 않으면 search.php 파일을 직접 커스텀해야 합니다.
댓글 남기기