Я потратил много времени на выяснение, почему мой поиск не работает в моем настраиваемом шаблоне. До сих пор мне удалось выяснить, как включить файл searchform.php в мой заголовок, созданный файл search.php, который в настоящее время пуст (поэтому в тот момент, когда я ищу что-то, я перенаправляюсь на пустую страницу, и я думаю, что я определенно нужно что-то в файле search.php, чтобы он работал), я читал все вокруг WordPress codex, но не смог найти решение, только полезная информация, которую я нашел, была такой.
http://codex.wordpress.org/Creating_a_Search_Page
Можете ли вы предложить, что нужно сделать, чтобы отображать результаты поиска? есть специальный запрос, функция и т. д.? Я действительно ничего не могу найти.
мой файл searchform.php в случае необходимости.
<form action="<?php echo home_url(); ?>" id="search-form" method="get"> <input type="text" name="s" id="s" value="type your search" onblur="if(this.value=='')this.value='type your search'" onfocus="if(this.value=='type your search')this.value=''" /> <input type="hidden" value="submit" /> </form>
В принципе, вам нужно включить цикл WordPress в шаблон search.php, чтобы просмотреть результаты поиска и показать их как часть шаблона.
Ниже приведен очень простой пример из шаблона шаблона темы WordPress и шаблона страницы в ThemeShaper.
<?php /** * The template for displaying Search Results pages. * * @package Shape * @since Shape 1.0 */ get_header(); ?> <section id="primary" class="content-area"> <div id="content" class="site-content" role="main"> <?php if ( have_posts() ) : ?> <header class="page-header"> <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'shape' ), '<span>' . get_search_query() . '</span>' ); ?></h1> </header><!-- .page-header --> <?php shape_content_nav( 'nav-above' ); ?> <?php /* Start the Loop */ ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', 'search' ); ?> <?php endwhile; ?> <?php shape_content_nav( 'nav-below' ); ?> <?php else : ?> <?php get_template_part( 'no-results', 'search' ); ?> <?php endif; ?> </div><!-- #content .site-content --> </section><!-- #primary .content-area --> <?php get_sidebar(); ?> <?php get_footer(); ?>
вам нужно включить цикл WordPress в ваш search.php, это пример
Файл шаблона search.php :
<?php get_header(); ?> <?php $s=get_search_query(); $args = array( 's' =>$s ); // The Query $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { _e("<h2 style='font-weight:bold;color:#000'>Search Results for: ".get_query_var('s')."</h2>"); while ( $the_query->have_posts() ) { $the_query->the_post(); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php } }else{ ?> <h2 style='font-weight:bold;color:#000'>Nothing Found</h2> <div class="alert alert-info"> <p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p> </div> <?php } ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Я использую searchform.php
и search.php
как уже упоминалось, но здесь я предоставляю фактический код.
Здесь создается страница codex
страницы поиска, а #Creating_a_Search_Page_Template
показывает поисковый запрос.
В моем случае я передаю аргументы $search_query
Class
WP_Query (который может определить, является ли поисковый запрос!). Затем я запускаю The Loop для отображения информации о должности, которую я хочу, и в моем случае это the_permalink и the_title
.
Форма окна поиска:
<form class="search" method="get" action="<?php echo home_url(); ?>" role="search"> <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" /> <button type="submit" role="button" class="btn btn-default right"/><span class="glyphicon glyphicon-search white"></span></button> </form>
Файл шаблона search.php
:
<?php global $query_string; $query_args = explode("&", $query_string); $search_query = array(); foreach($query_args as $key => $string) { $query_split = explode("=", $string); $search_query[$query_split[0]] = urldecode($query_split[1]); } // foreach $the_query = new WP_Query($search_query); if ( $the_query->have_posts() ) : ?> <!-- the loop --> <ul> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; ?> </ul> <!-- end of the loop --> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?>
Проверьте, содержит ли ваш шаблон в папке theme
search.php
и searchform.php
или нет.