Я не думаю, что принятый ответ правильный. exclude_from_search
предотвращает возврат всех $query = new WP_Query
.
Ядро говорит:
... извлекает любой тип кроме изменений и типов с 'exclude_from_search' установлен в значение TRUE)
Это общая проблема и Mixup с результаты поиска на лицевой стороне страницы vs поиск записей в базе данных.
Представляя содержимое с использованием пользовательских запросов на лицевой стороне, требуется exclude_from_search = false
или используйте другой подход и напрямую получите контент по идентификатору.
Вам необходимо отфильтровать механизм переднего конца поиска, а не. Это правда Исключить Post Типы из поиска, без ручного повторнога сборки «известной» типов:
function entex_fn_remove_post_type_from_search_results($query){
/* check is front end main loop content */
if(is_admin() || !$query->is_main_query()) return;
/* check is search result query */
if($query->is_search()){
$post_type_to_remove = 'staticcontent';
/* get all searchable post types */
$searchable_post_types = get_post_types(array('exclude_from_search' => false));
/* make sure you got the proper results, and that your post type is in the results */
if(is_array($searchable_post_types) && in_array($post_type_to_remove, $searchable_post_types)){
/* remove the post type from the array */
unset($searchable_post_types[ $post_type_to_remove ]);
/* set the query to the remaining searchable post types */
$query->set('post_type', $searchable_post_types);
}
}
}
add_action('pre_get_posts', 'entex_fn_remove_post_type_from_search_results');
И замечание $post_type_to_remove = 'staticcontent';
может быть изменено, чтобы соответствовать любому другому типу записи.
Пожалуйста сделайте комментарий если Im отсутствует что-то здесь, я не могу найти другой способ, чтобы предотвратить сценарии поста типа, как это, , показывающего содержания по запросу но скрыть от поиска/прямого доступа к передним конечным пользователям.
Мое слово, так просто спасибо !! Я сам зарегистрировал CPT, поэтому просто добавил 'exclude_from_search' => true – igloobob
Так что я просто заметил, что добавление строки exclude_from_search фактически останавливает отображение блока содержимого на странице. Он исчезает. Я хочу, чтобы CPT отображался на странице, но не в поиске. Это возможно? – igloobob
Хм .. это странно, конечно, этого не должно делать. Вы случайно забыли запятую в конце строки «exclude_from_search» => true в массиве аргументов? Если вы полностью удалите эту строку из аргументов CPT, возвращается ли содержимое? –