2016-07-15 2 views
1

나는 내 WordPress 검색 결과를 조정할 방법을 찾고있었습니다. 내 사이트에서특정 부모의 하위 페이지를 WordPress 검색 결과에서 숨기는 방법

나는 글, 페이지 & 및 사용자 정의 포스트 유형이 :

이 제가 원하는 것입니다. 이제 다른 페이지의 하위 페이지에있는 특정 페이지가 있습니다. 예를 들어 Services이라는 상위 페이지가 있고 그 아래에 ABC Service, XYZ Service 등 5 개의 하위 페이지가 있다고 가정 해 봅시다.

는 지금은 워드 프레스 검색 결과에 만 다음 사항을 반환하려면 :

  • 모든 게시물

  • 페이지 (아니 서비스 페이지와 그 아래에있는 모든 하위 페이지). 따라서 Services 페이지와 상위 페이지가있는 하위 페이지 5 개 모두 Services을 제외한 모든 페이지가 검색에 표시됩니다.

  • 다른 사용자 정의 포스트 유형

이 내가 무슨 짓을 :이 난 후

function ism_is_subpage() { 
    $post = get_post(); 

    if (is_page() && $post->post_parent) { 
     return $post->post_parent; 
    } else { 
      return false; 
    } 
} 

:

먼저 나는 하위 페이지를 확인하기 위해 작은 함수를 만들어 WordPress pre_get_posts 필터 호출을 생성하여 전달합니다. 이처럼 :

add_filter('pre_get_posts', function($query) { 
    if (!$query->is_admin && $query->is_search) { 
     $query->set('post_type', array('post', 'page', 'other-post-type1')); 
    } 
    return $query; 
}); 

는 그러나 문제는 내가 내 원하는 결과를 얻고 있지 않다는 ism_is_subpage() 전화를 아무리입니다.

누구든지 도와 줄 수 있습니까?

답변

1

당신은 페이지 ID는이 같은 것을 할 수있는 알고있는 경우 :

add_filter('pre_get_posts', function($query) { 
    if (!$query->is_admin && $query->is_search) { 
     $query->set('post_type', array('post', 'page', 'other-post-type1')); //this line to specify post types as it is already in your question 
     $query->set('post_parent__not_in', array($post_id)); 
     $query->set('post__not_in', array($post_id)); 
    } 
    return $query; 
}); 

확인 Post and Page parameters을하고 pre_get_posts hook 쿼리 변수 객체를 만든 후, 하지만이 전에 실제 쿼리가 호출 될 것을 염두에 두어야 운영.

편집

는, 당신은 포스트 유형 필터링 검색 할 모든 포스트 유형을 추가해야하고 'nav_menu_item'와 같은 default post types을 잊지 말아 않는 질문이었다, 등 그리고 첫째 $query->set(.....) 라인 예 . 게시물 ID (부모 페이지의 ID)는 예를 들어 44로 입력해야합니다.

+0

안녕하십니까. 몇 가지 질문이 있습니다. 위의 post_id에서 첫 번째로 부모 페이지를 넣을 수 있습니까? 또한 내가 언급 한 것처럼 게시물, 페이지, 사용자 정의 게시물 유형을 언급하는 방법이 없습니다. 검색에 표시하고 싶지 않은 특정 맞춤 게시물 유형이 있기 때문입니다. – iSaumya

+1

편집 plese (영문)를 확인하십시오. – ksno

+0

놀라운. 편집 해 주셔서 감사합니다. 그래서 나는 ism_is_subpage()를 더 이상 필요로하지 않는다. 마지막 질문이 1 개 있습니다. 왜'post_parent__not_in'과'post__not_in' 둘 다 사용합니까?'post__not_in'과 같은 것이기 때문에'Services' 페이지 자체가 검색에 나타나지 않고'post_parent__not_in'이'Services' 페이지의 자식이 검색에 나타나지 않도록 할 것입니다. 내가 맞습니까? – iSaumya

관련 문제