2013-08-08 2 views
1

У меня есть определенная страница в WordPress с родительскими страницами. Я хочу исключить эти родительские страницы из поиска WordPress.Предотвратите поиск WordPress от поиска по определенным страницам parentpages

В functions.php я попытался это:

function SearchFilter($query) { 
if ($query->is_search) { 
$query->set('post_parent', '4'); 
} 
return $query; 
} 

add_filter('pre_get_posts','SearchFilter'); 

Ну с этим кодом только post_parent является поиск, но я хочу наоборот. Как это будет выглядеть?

ОБНОВЛЕНИЕ: проблема решена. Вот решение (4 является идентификатор конкретной страницы, где родительские страницы должны быть исключены из поиска):

function SearchFilter($query) { 
    if ($query->is_search) { 
     $query->set('post_parent__not_in', array(4)); 
    } 
    return $query; 
} 

add_filter('pre_get_posts','SearchFilter'); 

Сердечные приветы Йохан

ответ

2

С Wordpress 3.6, можно использовать новый параметр запроса: post_parent__not_in

post_parent__not_in (array) - use post ids. Specify posts whose parent is not in an array.

+0

Большое спасибо! Это решило мою проблему! –

0

Использовать этот код функции в файле function.php вашей темы с идентификатором страницы, который вы хотите исключить из пользовательских поисковых ба вашей темы r ... И наслаждайтесь этим ...!

// Exclude specific posts/pages from search 
function exclude_pages_from_search($query) {  

    if ($query->is_main_query() && is_search()) { 

     $exclude_ids = array(11);// Array of the ID's to exclude 
     $query->set('post__not_in', $exclude_ids); 
     } 
      return $query; 
    } 

add_filter('pre_get_posts','exclude_pages_from_search');