суббота, 23 ноября 2013 г.

Оформление выдачи поиска в WordPress

Оформление страницы результатов поиска

 

Для вывода результатов поиска в 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>

Нумерация постов на странице результатов поиска

Для того чтобы результаты поиска были пронумерованны, нужно сделать следующее.
Для этого нужно добавить к циклу в файле 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/поиск 

 



 

 

IT-записки

comments powered by Disqus