会員ログイン
テーマ開発

WordPressでプラグインを使わず、簡易的な検索機能の実装。

Wordpressで検索機能の実装
はじめに
概要
ウェブサイトには検索機能があります。この機能は、ユーザビリティを向上させるために重要です。WordPressでは、デフォルトで検索結果をsearch.phpに表示する機能があります。今回は、プラグインを使わずに、この検索機能を利用してカテゴリーやタグを選択し、検索結果を表示する方法を実装します。
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。
疑問を持つ読者のイラスト読者

WordPressでプラグインを使わず、 簡易的な検索機能の実装。は、最初にどこを理解するとよいですか?

著者・木村のプロフィール写真木村

WordPress標準機能、プラグインの機能、テーマ側の処理を分けて考えると、どこを変更すべきか判断しやすくなります。

話を聞く読者のイラスト読者

実際に試すときは、手順だけでなく確認方法も知っておいた方がよいでしょうか?

著者・木村のプロフィール写真木村

はい。この記事では、作業の目的から実装後の確認までを順番に整理します。自分の環境と照らし合わせながら読み進めてください。

 

検索機能の実装

検索機能の実装では、WordPressでプラグインを使わず、 簡易的な検索機能の実装。を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

search.php

このファイルは、ユーザーが特定のキーワードやクエリを入力して検索を実行する際に使用されます。一覧ページと同様に、検索結果がタイトルや画像とともに表示されるように設定してください。

formタグ

formタグは通常、ユーザーからの情報を受け取り、それをサーバーに送信するために使用されます。このため、formタグにはaction属性があり、データを送信する先のURLを指定する必要があります。また、method属性を使用して、データの送信方法(GETまたはPOST)を指定することもできます。ここではGETを使用します。”action”属性は、HTMLフォームが送信された際にブラウザがデータを送信する先のURLを指定します。ここではhome_url()関数を使用して、サイトのURLを取得します。

inputタグ

一例として以下のようにnameとidをしてformタグ内に記述します。
<form method="get" action="<?php echo esc_url(home_url()); ?>">
 <input name="s" id="s" class="input-search" placeholder="記事を検索" />
</form>
こちらを記述するだけで、簡易的な検索機能が実装されます。以下はindex.phpに上記を記述し検索した結果です。
 

カテゴリーとタグの検索

カテゴリーとタグの検索では、WordPressでプラグインを使わず、 簡易的な検索機能の実装。を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

カテゴリー

formタグの中に以下を記述します。コピペでOKです。
<?php wp_dropdown_categories('orderby=name&hide_empty=-&show_option_all=カテゴリー選択&selected=0'); ?>
<input id="submit" type="submit" value="検索" />
こちらを入力するとカテゴリーのセレクトボタンが表示されます。そして登録しているカテゴリーでの絞り込みができます。

タグ

タグ表示の一例は以下の通りです。
<?php $tags = get_tags();
if ($tags) : ?>
    <select name='tag' id='tag'>
        <option value="" selected="selected">タグ選択</option>
        <?php foreach ($tags as $tag) : ?>
            <option value="<?php echo esc_attr($tag->slug); ?>"><?php echo esc_html($tag->name); ?></option>
        <?php endforeach; ?>
    </select>
<?php endif; ?>
カテゴリー同様タグが表示され絞り込みの検索が可能になりました。
 

検索機能の強化

検索機能の強化では、WordPressでプラグインを使わず、 簡易的な検索機能の実装。を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

現在、何も入力せずにも検索が行われてしまいます。そこで、Javascriptを使って何も入力されていないときは検索が行われないようにコードを修正します。 Javascript
<script>
    function preventEmptySearch() {
      var searchInput = document.getElementById('s');
      var selectedCategory = document.getElementById('cat');
      var selectedTag = document.getElementById('tag');

      // Check if the search query, category, and tag are empty or have default values
      if (searchInput.value.trim() === '' && selectedCategory.value === '0' && selectedTag.value === '') {
        return false; // Prevent form submission
      }
    }
  </script>
そしてこちらの関数をformタグで実行します。
<form method="get" class="flex-column" onsubmit="return preventEmptySearch()" action="<?php echo esc_url(home_url()); ?>">
 

検索機能の強化で押さえたいポイント

検索機能の強化は、コードや設定だけを切り離して覚えるより、何を変えるための処理なのかを確認してから試すと理解しやすくなります。変更前の状態を控え、作業を一つずつ反映すると、問題が起きた場所も特定しやすくなります。

検索機能の強化の確認方法

ローカル環境で変更し、未ログイン状態と管理者状態の両方で表示を確認します。PHPを変更した場合は、エラーログ、権限、エスケープ処理も合わせて確認してください。

実装前に確認しておきたいこと

ここでは、WordPressでプラグインを使わず、 簡易的な検索機能の実装。を実際の制作へ取り入れる前に、準備しておきたい内容を整理します。先に作業範囲と確認方法を決めておくと、既存ページへの影響を抑えながら進められます。

作業の目的と変更範囲を決める

WordPress標準機能、プラグインの機能、テーマ側の処理を分けて考えると、どこを変更すべきか判断しやすくなります。 サンプルをそのまま貼り付ける前に、どのページ、どの要素、どの利用者へ影響するのかを書き出してください。目的が明確であれば、必要以上にコードや設定を増やさずに済みます。

元の状態へ戻せるようにする

テーマや設定を変更するときは、対象ファイルや設定値のコピーを残します。複数の変更を一度に行わず、一つ反映するたびに表示と動作を確認すると、問題が起きても原因を切り分けやすくなります。

よくあるつまずきと確認方法

WordPressでプラグインを使わず、 簡易的な検索機能の実装。が期待どおりに動かない場合は、コードを追加し続ける前に、読み込み順、対象要素、設定値、キャッシュの順で確認します。小さな入力ミスや確認条件の違いが原因になることも少なくありません。

変更が反映されない場合

保存したファイルと表示中のページが対応しているかを確認し、キャッシュを消して再読み込みします。ブラウザーの開発者ツールやWordPressのエラーログを確認すると、読み込み失敗や記述ミスを見つけやすくなります。

公開前の最終確認

ローカル環境で変更し、未ログイン状態と管理者状態の両方で表示を確認します。PHPを変更した場合は、エラーログ、権限、エスケープ処理も合わせて確認してください。

まとめ

  • WordPressではデフォルトで検索を実装できる機能が用意されている
  • カテゴリーやタグで絞り込みが可能

MEMBER COMMENTS

コメント(0件)

会員ログイン後にコメントできます

記事への質問や感想をコメントで共有できます。無料会員登録後もこの記事へ戻れます。