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


13

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

search 

Ответы:


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');

Где я могу разместить этот код? Спасибо

Вы можете поместить его в 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


У меня нет 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/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.