Intereting Posts
Автодоменный поддомен от основного домена на отдельных сайтах с разным БД Есть ли плагин, который облегчит отображение содержимого веб-сайта (статические страницы, а не блог) на двух языках Введите теги по порядку, который они набрали Почему мой вызов ajax обновляет страницу? Установка wp3.2.1 на IIS; получение пустых сессий Как добавить ссылку (href), поэтому, когда я нажимаю на нее, она отображает (показывает все) сообщения пользовательского типа сообщений (rich_media) из текущей категории? Как настроить активные плагины как экран по умолчанию? Сохранить запись, создать динамическую папку в папке загрузки Настройка настраиваемого блога направляет блог на страницу индекса Пользовательский тип сообщения, который не соответствует категориям и тегам Значок массовой информации загружает название по умолчанию из имени файла Удалите многосайтовый «блог» из специального пользовательского типа сообщения Multisite -> XMLRPC Кнопка Insert media всегда добавляется в один и тот же редактор tinyMCE Как ограничить отображаемые сообщения в wordpress

Как изменить search.php, чтобы не показывать страницы, только показывать сообщения

Я хочу изменить search.php, чтобы он показывал только сообщения, а не страницы. Вы можете помочь?

Вот цикл в search.php:

<?php if (have_posts()) : ?> <?php while(have_posts()): the_post(); ?> 

Solutions Collecting From Web of "Как изменить search.php, чтобы не показывать страницы, только показывать сообщения"

Шаблон поиска слишком поздно, чтобы что-либо изменить: страницы ищутся уже здесь, а номера страниц будут неправильными. Не изменяйте результат, изменяйте запрос.

Фильтр posts_search вместо этого, и если есть поисковый posts_where_paged , отфильтруйте posts_where_paged и удалите тип сообщения, который вы не хотите искать.

Образец кода:

 is_admin() || add_filter( 'posts_search', function( $search ) { empty ( $search ) || add_filter( 'posts_where_paged', function( $where ) { return preg_replace( '~post_type IN \((.*)\'page\',?~', 'post_type IN (\1', $where ); }); return $search; }); , is_admin() || add_filter( 'posts_search', function( $search ) { empty ( $search ) || add_filter( 'posts_where_paged', function( $where ) { return preg_replace( '~post_type IN \((.*)\'page\',?~', 'post_type IN (\1', $where ); }); return $search; }); 

Я написал статью об этом некоторое время назад: Исключая определенные сообщения или страницы из результатов поиска в WordPress

Но длинный и короткий:

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

Вы можете добавить это в файл functions.php вашей темы.

Что он делает, так это фильтр основного запроса базы данных, который выполняется WP, прежде чем он запускается, и сообщает WP, что он ищет только сообщения.

замените свою петлю на это и дайте мне знать, если эта работа.

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?> <?php if (is_page()) continue; ?> <?php endwhile; ?> <?php endif; ?>