Как удалить страницы из поиска?

13

Мне не нужно искать страницы на моем сайте, а хочу только искать сообщения, есть ли способ сделать это? Благодарность


источник

Ответы:

28

Ниже приведено, что тип поста на странице больше не поддерживает поиск.

function remove_pages_from_search() {
    global $wp_post_types;
    $wp_post_types['page']->exclude_from_search = true;
}
add_action('init', 'remove_pages_from_search');
prettyboymp
источник
Где я могу разместить этот код? Спасибо
Вы можете поместить его в functions.php вашей темы.
prettyboymp
Большое спасибо. Я просто скопировал, вставил его, и он отлично работает
13

Следующее в functions.php также хорошо работает:

//Remove pages from search results
function mySearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');
Арнольд
источник
должно быть решение. более элегантный, более ремонтопригодный. hte выше просто изменяет параметры типа записей, это сам поисковый запрос. +1
кайзер
Изменение объекта типа поста для типа поста «страница» является лучшим решением. Это решение заставляет тип записи быть жестко установленным как «публикация» для всех поисковых запросов, что будет препятствовать отображению любых пользовательских типов записей в поиске, если таковой имеется на сайте. Глобальная установка свойства exclude_from_search объекта типа «страница» означает, что любой код, который зависит от проверки этого свойства, будет иметь правильную информацию.
prettyboymp
Немного релевантная ссылка с немного большей информацией: codex.wordpress.org/…
its_me
Хорошо работает, но не в теме топика в bbpress, так что это не хорошо. Использование "$ wp_post_types ['page'] -> exclude_from_search = true;" хороший вариант кажется
Кишоре Саху
0

поместите это в ваш search.php

<?php if (is_search() && ($post->post_type=='page')) continue; ?>

прямо под этим кодом -> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

Вы можете найти больше на здесь http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages

AndrewK
источник
У меня нет search.php, если я получу одну из другой темы, будет ли она работать? Спасибо
да. сначала создайте пустой search.php, затем скопируйте и вставьте код из index.php. тогда делай то, что я тебе сказал выше.
Андрей
1
на самом деле вы должны использовать код @ prettyboymp. это проще и делает то, что вы просили. Я проверил это. если хочешь ..
андрюк
0

Вот код, который проверяет, является ли поиск от администратора, а затем устанавливает тип сообщения для поиска:

if (!is_admin()) {
function wpb_search_filter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','wpb_search_filter');
}

от: http://www.wpbeginner.com/wp-tutorials/how-to-exclude-pages-from-wordpress-search-results/

HcRock
источник