Как отобразить результаты поиска в Wordpress?
Я потратил много времени на выяснение, почему мой поиск не работает в моем настраиваемом шаблоне. До сих пор мне удалось выяснить, как включить файл searchform.php в мой заголовок, созданный файл search.php, который в настоящее время пуст (поэтому в тот момент, когда я ищу что-то, я перенаправляюсь на пустую страницу, и я думаю, что я определенно нужно что-то в файле search.php, чтобы оно работало), я читал все вокруг Wordpress codex, но не смог найти решение, только полезная информация, которую я нашел, была такой.
http://codex.wordpress.org/Creating_a_Search_Page
Можете ли вы предложить, что нужно сделать, чтобы отображать результаты поиска? есть специальный запрос, функция и т.д.? Я действительно ничего не могу найти.
my 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>
Ответы
Ответ 1
В принципе, вам нужно включить цикл 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(); ?>
Ответ 2
вам нужно включить цикл 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(); ?>
Ответ 3
Я использую файлы searchform.php
и search.php
, как уже упоминалось, но здесь я предоставляю фактический код.
Создание страницы поиска codex
здесь помогает, а #Creating_a_Search_Page_Template
- поисковый запрос.
В моем случае я передаю аргументы $search_query
в WP_Query Class
(который может определить, является ли поисковый запрос!), Затем я запускаю 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; ?>
Ответ 4
Проверьте, содержит ли ваш шаблон в папке theme
search.php
и searchform.php
или нет.