WP
ウィジェットを使用せずに検索窓を設置する
まず設置したいテンプレートに
<?php get_search_form(); ?>
と記述する。すると以下が呼び出されるので準備をしておく。
searchform.phpの用意
<form method="get" action="<?php echo home_url('/'); ?>" >
<input name="s" type="text">
<button type="submit">search</button>
</form>
上記のsubmitで呼び出される検索結果の一覧を表示するために
search.phpの用意
<?php get_header(); ?>
<h1 class="title"><?php printf( '<span>' . get_search_query() . '</span>' ); ?>の検索結果</h1>
<?php if ( have_posts() ) : ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>">
<figure>
<?php if ( has_post_thumbnail() ) : ?>
<?php
the_post_thumbnail("custom-thumbsize", array(
"alt" => strip_tags(get_the_title()) . " イメージ",
)); ?>
<?php else : ?>
<img src="<?php echo get_stylesheet_directory_uri(); ?>/img/common/noimg.gif">
<?php endif; ?>
</figure>
<time><?php the_time('Y/m/d'); ?></time>
<h2><?php echo get_the_title(); ?></h2>
</a>
</li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p>該当記事がありません</p>
<?php endif; ?>
<?php get_footer(); ?>
※カスタム投稿のみを検索対象とする場合
まず「searchform-カスタム投稿スラッグ.php」というファイル名で利用できるようにfunctionに下準備をする。
add_filter('template_include','custom_search_template');
function custom_search_template($template){
if ( is_search() ){
$post_types = get_query_var('post_type');
foreach ( (array) $post_types as $post_type )
$templates[] = "search-{$post_type}.php";
$templates[] = 'search.php';
$template = get_query_template('search',$templates);
}
return $template;
}
次にテンプレート側で
<?php get_template_part( 'searchform','カスタム投稿スラッグ' ); ?>
で呼び出し、同様に
・searchform-カスタム投稿スラッグ.php
<form method="get" action="<?php echo home_url('/'); ?>" >
<input class="hsf box" name="s" type="text">
<input type="hidden" name="post_type" value="カスタム投稿スラッグ">
<button type="submit">search</button>
</form>
・search-カスタム投稿スラッグ.php
<!-- アイキャッチ、投稿日、タイトルくらいならsearch.phpと同内容 -->