こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

wordpress 検索フォームと結果を同ページで

wordpressで検索フォームと検索結果を作成しています。

検索フォームは
<form action="<?php echo home_url(); ?>" method="get">
<dl>
<dt> お部屋のタイプ</dt>
<dd> <?php wp_dropdown_categories(array(
'show_option_all' => '全てのタイプ'
)); ?></dd>
<dt> こだわり検索</dt>
<dd> <?php
$terms = get_terms('good');
foreach ($terms as $term): ?>
<label> <input type="radio" name="good" value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></label>
<?php endforeach; ?>
</select> </dd>
<dt> キーワード</dt>
<dd> <input type="text" value="" name="s" /> </dd>
</dl>
<input type="submit" value="この内容で検索!" />
</form>
としています。

検索結果は「search.php」を作り
<div id="wrapper">
<h4 class="h4_search">★検索結果</h4>
<div id="content">
<section>
<?php if (is_search()) : ?>
<?php endif; ?>
<?php if (have_posts()) :?>
<div class="postWrap">
<?php while (have_posts()) : the_post(); ?>
<article id="post-<?php the_ID(); ?>">
<div class="search">
<header>
<h5><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><span><?php the_title(); ?></span></a></h5>
<a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?></a>
<?php echo mb_substr(get_the_excerpt(),0, 50);?>
<a href="<?php the_permalink();?>">&emsp;…&nbsp;続きを読む</a>
</header>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
としています。

このままでは、検索フォームのあるページから別のページ(search.php)に飛んで検索結果が出ます。

ここで、検索結果を検索フォームのあるページ内で表示したいと思っております。
検索フォームに入力し、submitボタンを押すと、そのすぐ下に検索結果がずらりと表示できるようにしたいです。

このようなことは可能でしょうか?
できればプラグインを使わずに実現したいので、コードを教えていただければ有難いです。

何卒よろしくお願いします。

投稿日時 - 2016-04-14 09:05:22

QNo.9158231

困ってます

質問者が選んだベストアンサー

これではダメなのでしょうか?

https://wpdocs.osdn.jp/%E6%A4%9C%E7%B4%A2%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90

投稿日時 - 2016-04-14 09:56:36

補足

ご回答ありがとうございました。
こちらの理解力不足でうまくいきませんでした。
当方、PHPの知識があまり無いので、コピペで何とか作っています。

今回のアドバイスを受けて
(1)search.phpは削除(念のためにindex.phpとsingle.php、page.phpも削除)
(2)代わりに下記のようなコードでsearchpage.phpを作りました。
(Search Pageというテンプレート)


<?php
/*
Template Name: Search Page
*/
?>


<div id="wrapper">

<form action="<?php echo home_url(); ?>" method="get">
<dl>
<dt> お部屋のタイプ</dt>
<dd> <?php wp_dropdown_categories(array(
'show_option_all' => '全てのタイプ'
)); ?></dd>
<dt> こだわり検索</dt>
<dd> <?php
$terms = get_terms('good');
foreach ($terms as $term): ?>
<label> <input type="radio" name="good" value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></label>
<?php endforeach; ?>
</select> </dd>
<dt> キーワード</dt>
<dd> <input type="text" value="" name="s" /> </dd>
</dl>
<input type="submit" value="この内容で検索!" />
</form>

<h4 class="h4_search">★検索結果</h4>
<div id="content">
<section>

<?php if (is_search()) : ?>

<?php endif; ?>
<?php if (have_posts()) :?>

<div class="postWrap">

<?php while (have_posts()) : the_post(); ?>
<article id="post-<?php the_ID(); ?>">
<div class="search">
<header>
<h5><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><span><?php the_title(); ?></span></a></h5>
<a href="<?php the_permalink(); ?>"> <?php the_post_thumbnail(); ?></a>
<?php echo mb_substr(get_the_excerpt(),0, 50);?>
<a href="<?php the_permalink();?>">&emsp;…&nbsp;続きを読む</a>
</header>
</div>

<?php endwhile; ?>
</div>

<?php endif; ?>


<?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]] = $query_split[1];
} // foreach
$search = new WP_Query($search_query);
?>


<?php
global $wp_query;
$total_results = $wp_query->found_posts;
?>

この「Search Page」のテンプレートで「検索」という固定ページを作成しました。
検索はできるのですが、検索結果は別のページに出てしまいます。

何しろPHPの知識があまり無いもので、どこが間違っているのかも分かりません。
もし、ご指摘いただければ有難いです。

投稿日時 - 2016-04-14 11:32:36

お礼

t_hirai様
お礼が遅れて申し訳ありません。
まだ解決にはいたっておりませんが、紹介していただいたサイトを参考に何とかやれそうです。
ありがとうございました!

投稿日時 - 2016-05-13 10:22:09

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-