Intereting Posts
Как сделать аватару + имя отображаемого имени пользователя в их профиле? прикреплять PDF-файл к шаблону архивов? Пользовательский цикл отключен одним сообщением ожидая 404, но перенаправляя сообщение с поддиректорией url в заголовке сообщения Как создать специфический виджет почты в блоге Управление обновлениями, когда WordPress находится в вашем собственном репозитории svn Успешная функция AJAX с использованием JS substr () не работает в WP 4.1 vs 4.0 Пользовательский статус сообщения не отображается в пользовательском типе публикации ВСЕ wp_query добавлять аргументы, используя array_push, если переменная встречается Проблемы с доступом к таблицам стилей / скриптам, загружаемым в заголовок WP Как добавить столбец post_author в настраиваемый тип сообщения Необходим обходной путь для небезопасного запроса конечной точки XMLHttpRequest Как распознаются обновления файла style.css в дочерней теме? Отфильтровать собственные сообщения с комментариями / без комментариев Создание csv-файла в плагине

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