Оформление страницы результатов поиска
Для вывода результатов поиска в WordPress применяется отдельный файл в теме –search.php. Если у вас в теме его нет, что движок использует для показа результатов другой файл с циклом вывода постов, скорее всего, index.php. В этом случае страница результатов поиска ничем не будет отличаться от страницы записей. Это не очень удобно, так как может ввести в заблуждение пользователя.
Для того чтобы оформить страницу вывода результатов поиска WP. Нужно создать файл search.php в папке с вашей темой WordPress, если его нет.
Вывод поискового запроса в результатах поиска
Не в каждой теме предусмотрен вывод поискового запроса на странице результатов. Представьте ситуацию. Используя следующий код, можно вывести поисковый запрос на страницу вывода результата поиска.
<h2>Результаты поиска по запросу: <?php $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span style="color: #900;">'); echo $key; _e('</span>'); wp_reset_query(); ?></h2>
<h2>Результаты поиска по запросу: <?php $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span style="color: #900;">'); echo $key; _e('</span>'); wp_reset_query(); ?></h2>
Нумерация постов на странице результатов поиска
Для того чтобы результаты поиска были пронумерованны, нужно сделать следующее.
Для этого нужно добавить к циклу в файле search.php теги нумерованного списка<ol></ol> и <li></li>. Строки, где подставлены эти теги в коде выделены.
<ol class="searchresults">
<?php if(have_posts()):?><?php while(have_posts()):the_post();?>
<li>
<div class="post" id="post-<?php the_ID();?>">
<h2><a href="<?php the_permalink();?>" title="<?php the_title();?>"><?php the_title();?></a></h2>
<div class="entry">
<?php the_excerpt('');?>
</div>
</div>
</li>
<?php endwhile;?>
</ol>
<?php else:?>
<?php endif;?>
Цикл находится внутри нумерованного списка, а посты – это пункты списка.
Если нумерации нет, то, возможно, в стилях прописано list-style: none для тегов <ol> (довольно часто встречается в темах WordPress).
В этом случае:
.searchresults {
list-style: decimal;
}
Изменяем ссылку для результатов поиска
Стандартно в WordPress если вы задали поиск, то результаты поиска открываются на странице с адресом типа: http://mysite.com/?s=поиск выглядит это не очень красиво.
Для того, чтобы изменить эту ссылку, необходимо открыть файл «functions.php» который находится в папке с вашим шаблоном WordPress и добавить в него следующий код:
function fb_change_search_url_rewrite() { if ( is_search() && ! empty( $_GET['s'] ) ) { wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) ); exit(); } } add_action( 'template_redirect', 'fb_change_search_url_rewrite' );
После чего, страница с результатами поиска будет выглядеть примерно так:
http://mysite.com/search/поиск