トップへ戻る
BLOGS

WordPress search.phpを記述して検索結果を出力する

WordPress search.phpを記述して検索結果を出力する

こんにちは今回はWordPressのサイト内検索機能の実装をしたいと思います。すでにsearchform.PHPなどを作成し検索すること自体は可能な状態です。

やりたいこと、条件は以下に、

  • 検索Wordに応じて動的にページ内容を変えたい
  • フォームはできているので値として受け取って処理できるページにする
  • プラグインは使いません

以上の内容です。

はい。では簡潔にコードを投下します。

search.phpに記述する内容

<?php if (isset($_GET['s']) && empty($_GET['s'])) ://検索フォームgetの値が入力されているか確認?>
      <h3 class="text-frame"><?php echo esc_html('検索キーワードを入力してください');//キーワード未入力時のテキスト?></h3>
      <?php else: ?>
      <h3 class="text-frame">「<?php echo $_GET['s'].'」の検索結果:'.$wp_query->found_posts.'件';?></h3>
      <?php endif; ?>

<?php if (isset($_GET['s']) && empty($_GET['s'])) :

ここで$_GET[‘s’]に値が格納されているのでif文で変数に値があるのか判定しています。よく利用されている、WordPress関数のthe_search_query()は今回は使用しません。

$wp_query->found_posts.'件';の部分はグローバル変数?ということでいつでも参照しキーを用いてechoすることで投稿数を表示している。他にも使えそうなものは、、、

$posts」要求された投稿をデータベースから取得したもの。「$post_count」表示される投稿の数。「$found_posts」現在のクエリ変数に一致する投稿の合計数。等がある。

後はいつもどおりのループ文を記述し最後に検索が見つからない場合の,else: の指定をします。

<?php if (have_posts()) :?>
    <?php while (have_posts()) : the_post(); ?>
      <div class="post_cade">
        <a href="<?php the_permalink();?>">
          <div class="thumbnail">
            <?php if (has_post_thumbnail()): the_post_thumbnail();
            else : ?>
            <img src="<?php echo get_stylesheet_directory_uri();?>/img/no-image.png" alt="画像はありません。">
            <?php endif; ?>
          </div><!-- thumbnail -->
          <div class="post_date">
            <h1><?php the_title(); ?></h1>
            <time><?php the_time("n月,j,Y"); ?></time>
          </div><!--post_date-->
        </a>
      </div><!--post_cade-->
      <?php endwhile;
      else: ?>
      <p>検索されたキーワードにマッチする記事はありませんでした。</p>
      <?php endif; ?>

ちなみに先に書いておいたsearchform.phpの内容はこちら、

<form action="/" method="GET">
  <div class="search">
    <input type="text" name="s" value="<?php the_search_query();?>">
  </div>
  <input type="hidden" name="post_type" value="production">
  <input type="hidden" name="post_type" value="oja_tags">
  <input type="hidden" name="post_type" value="oja_cat">
</form>

以下は検索フォームを作動させる条件です。

  • formタグのaction属性にトップページヘのURLを設定する
  • formタグのmethod属性には「GET」を使用する
  • name属性には「S」を設定する

はい。以上を守って値のやり取りをしていたわけですね。

コメントをお待ちしております

お気軽にコメントをどうぞ。

CAPTCHA