Intereting Posts
Пользовательское поле в шаблоне TWIG – плагин дополнительных настраиваемых полей Удаление WordPress <p> тегов? Пользователь WordPress, добавленный с идентификатором 0 Добавить код только для сообщений в блоге Клонирование add_settings_field () с помощью jQuery Объяснение совместимости плагина WordPress, когда WordPress выпускает свою новую версию (теоретическую) Скрыть избранное изображение в почте в двадцать пять Как включить теги в WordPress без плагина Форма контакта 7 – как манипулировать данными до отправки почты? Удалить пользовательский тип сообщения, сгенерированный плагином (Календарь событий) Создайте раскрывающийся список с настраиваемыми типами сообщений в качестве опции в admin Как изменить или добавить Woocommerce, спасибо ключевому содержимому страницы URL-адреса? Изменение настроек постоянной ссылки вызывает 404 setcookies и отправка заголовка Как публиковать страницу, которая не может быть обнаружена поисковыми системами?

Как изменить 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; ?>