2016-10-03 3 views
0

У меня есть один пользовательский тип сообщения, который я использую для некоторых текстовых блоков на странице, построенной с использованием неподходящей темы. Мне нужно, чтобы эти блоки были общедоступными, поэтому они отображались на странице, но я хочу остановить их появление в результатах поиска.stop wordpress search, показывающий пользовательский тип сообщения

search.php не является обычным файлом поиска Wordpress, он является файлом uncode-theme и не имеет обычных запросов. Я не думаю, что я думаю, что мне нужна функция, может быть?

Может ли кто-нибудь посоветуете, как этого достичь?

ЕКПП 'staticcontent'

Спасибо!

ответ

0

Ответ здесь зависит от того, создаете ли вы CPT через свой собственный код или если другой плагин создает CPT. Смотрите эту ссылку для большого объяснения обоих подходов:

http://www.webtipblog.com/exclude-custom-post-type-search-wordpress/

Основная суть заключается в следующем:

Если вы создаете свой собственный CPT, вы можете добавить аргумент в register_post_type() вызов из 'exclude_from_search' => true

Если другой плагин/тема создания CPT, вам нужно установить эту переменную exclude_from_search позже, как часть фильтра к КПП, как таковой:

// functions.php 

add_action('init', 'update_my_custom_type', 99); 

function update_my_custom_type() { 
    global $wp_post_types; 

    if (post_type_exists('staticcontent')) { 

     // exclude from search results 
     $wp_post_types['staticcontent']->exclude_from_search = true; 
    } 
} 
+1

Мое слово, так просто спасибо !! Я сам зарегистрировал CPT, поэтому просто добавил 'exclude_from_search' => true – igloobob

+0

Так что я просто заметил, что добавление строки exclude_from_search фактически останавливает отображение блока содержимого на странице. Он исчезает. Я хочу, чтобы CPT отображался на странице, но не в поиске. Это возможно? – igloobob

+0

Хм .. это странно, конечно, этого не должно делать. Вы случайно забыли запятую в конце строки «exclude_from_search» => true в массиве аргументов? Если вы полностью удалите эту строку из аргументов CPT, возвращается ли содержимое? –

0

Я не думаю, что принятый ответ правильный. 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 отсутствует что-то здесь, я не могу найти другой способ, чтобы предотвратить сценарии поста типа, как это, , показывающего содержания по запросу но скрыть от поиска/прямого доступа к передним конечным пользователям.

Смежные вопросы