※ ChatGPTを利用し、要約された質問です(原文:wordpress 検索フォームと結果を同ページで)
wordpressで検索フォームと検索結果を同じページに表示する方法
このQ&Aのポイント
wordpressで検索フォームと検索結果を同じページに表示する方法について教えてください。
私はwordpressで検索フォームを作成し、ユーザーが入力した情報を元に検索結果を表示したいと考えています。
可能であればプラグインを使わずに、コードのみで実現したいです。どのような方法があるでしょうか?
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();?>"> … 続きを読む</a>
</header>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
としています。
このままでは、検索フォームのあるページから別のページ(search.php)に飛んで検索結果が出ます。
ここで、検索結果を検索フォームのあるページ内で表示したいと思っております。
検索フォームに入力し、submitボタンを押すと、そのすぐ下に検索結果がずらりと表示できるようにしたいです。
このようなことは可能でしょうか?
できればプラグインを使わずに実現したいので、コードを教えていただければ有難いです。
何卒よろしくお願いします。
お礼
t_hirai様 お礼が遅れて申し訳ありません。 まだ解決にはいたっておりませんが、紹介していただいたサイトを参考に何とかやれそうです。 ありがとうございました!
補足
ご回答ありがとうございました。 こちらの理解力不足でうまくいきませんでした。 当方、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();?>"> … 続きを読む</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の知識があまり無いもので、どこが間違っているのかも分かりません。 もし、ご指摘いただければ有難いです。