プラグインなしで WordPress でカスタム検索を作成する方法

公開: 2022-07-25

プラグインなしで WordPress でカスタム検索を作成する方法を知りたいですか?

サイトの検索をカスタマイズすることで、ページビューの数を増やし、売り上げを伸ばし、訪問者が目的のものをより早く見つけられるようにすることができます.

この記事では、プラグインをインストールせずにサイトの検索をカスタマイズする方法と、そのためにプラグインの使用を検討する必要がある理由について説明します.

この記事をすばやくナビゲートするのに役立つ目次を次に示します。

  • WordPress ウェブサイトにとってカスタム検索が重要な理由
  • プラグインなしでカスタム検索を作成することの欠点
  • サイトで WordPress 検索をカスタマイズする最も簡単な方法
  • プラグインなしで WordPress でカスタム検索を作成する

さぁ、始めよう!

WordPress ウェブサイトにとってカスタム検索が重要な理由

まず、サイトのカスタム検索がビジネスの成長にどのように役立つかについて説明しましょう。

サイトの検索をカスタマイズすると、次のことが可能になります。

  • より関連性の高い検索結果を提供します。 検索を特定のカテゴリに限定して検索結果を絞り込み、訪問者が探しているものをより速く見つけられるようにします。
  • ページビューと売上を増やしましょう。 検索結果で特定の投稿や製品を宣伝することで、コンテンツの発見可能性を高め、収入を増やします。
  • 忠実な視聴者を構築します。 あなたのサイトで良い検索体験をした訪問者は、あなたのコンテンツをもっと探索するために再び戻ってくる可能性が高くなります.
  • 検索エンジンからのトラフィックを増やします。 訪問者が適切なコンテンツをより早く見つけられるようにすることで、訪問者がサイトに長く留まることができます。これは、Google の主要なランキング要素の 1 つです。

カスタム検索がビジネスにどのようなメリットをもたらすかを理解した後、プラグインなしでカスタム検索を行う場合に予想されるデメリットについて話しましょう。

プラグインなしでカスタム検索を作成することの欠点

プラグインを使用せずにサイトでカスタム検索を作成する場合は、いくつかの主な欠点を考慮する必要があります。

1.コーディングスキルとWordPressの深い知識が必要

サイト検索を手動でカスタマイズすることの主な欠点は、豊富なコーディング経験と WordPress の深い知識が必要になることです。

問題は、WordPress にはデフォルトの検索設定ツールがないということです。

そのため、検索をカスタマイズする唯一の方法は、WordPress コア ファイルとテーマのコードを変更することです。

不便で時間がかかり、技術に詳しくない人には不向きです。

さらに、何か間違ったことをすると、サイトがクラッシュする可能性があるため、テーマ ファイルをカスタマイズするときは十分に注意する必要があります。

2. 機能が少なくなる

さらに、豊富なコーディング スキルを持っていても、プラグインなしで追加できるカスタム検索機能の数は限られています。

たとえば、独自のルール セットを使用して複数の検索エンジンを追加したり、特定のページやカテゴリを検索から除外したり、検索結果の順序を管理したりすることはできません。

そのため、サイトでの検索の仕組みを完全に制御することが重要な場合は、強力な WordPress 検索プラグインの使用を検討する必要があります.

3. 変更内容が失われる可能性があります

最後に、プラグインなしで検索をカスタマイズするには、サイトのファイルを編集する必要があるため、テーマまたは WordPress のバージョンを更新すると、行ったすべての変更が失われます。

このような状況を回避する最善の方法は、WordPress 検索プラグインを使用することです。これは、サイトで何をしても設定が保持されるためです。

それでは、技術的なスキルに関係なく、コーディングを必要とせずに、数回クリックするだけでサイトの検索をカスタマイズする方法を見てみましょう。

サイトで WordPress 検索をカスタマイズする最も簡単な方法

WordPress サイトで検索をカスタマイズする最も簡単な方法は、SearchWP などのプラグインを使用することです。

SearchWP logo

SearchWP は、30,000 人を超える Web サイト所有者から信頼されている、最高評価の WordPress 検索プラグインです。

初心者に優しいインターフェイスと強力な機能により、最初の Web サイトを立ち上げた場合でも、検索を完全にカスタマイズできます。

たとえば、SearchWP を使用すると、WordPress が一致を探す場所を管理したり、検索を特定の種類のコンテンツに制限したり、タグやカスタム フィールドによる検索を有効にしたりできます。

最良のことは、これらのほとんどのことを数回クリックするだけで実行できることです。

SearchWP を使用して次のこともできます。

  • 検索結果をライブ モードで表示します。 サイトでの検索結果のライブ表示を有効にして、訪問者が目的のコンテンツに即座に移動できるようにします。
  • 訪問者の検索を追跡します。 訪問者がサイトで何を検索しているか、最もクリックしやすい結果、その他の貴重なデータに関するデータを収集します。
  • 検索結果で検索用語をハイライトします。 検索結果でキーワードを強調表示することで、訪問者が適切なコンテンツを見つけたかどうかをより早く把握できるようにします。
  • 特定のページを検索から除外します。 冗長なページや古いコンテンツを除外して、サイトの検索結果を整理します。

SearchWP が最高の WordPress 検索プラグインである理由を理解したら、それを使用してサイトの検索をニーズに合わせてカスタマイズする方法を見てみましょう.

ステップ 1: SearchWP をインストールしてアクティブ化する

最初のステップは、ここに行って SearchWP のコピーを入手することです。

完了したら、SearchWP アカウント ダッシュボードに移動し、 [ダウンロード] をクリックします。

go to the Downloads tab

次に、[ SearchWP のダウンロード] ボタンを押して、プラグインをコンピューターに保存します。

click Download SearchWP

ダウンロード後、左下隅にある SearchWP ライセンス キーをコピーします。

copy your license key

次に、サイトに SearchWP をインストールする必要があります。 サポートが必要な場合は、WordPress プラグインのインストールに関する詳細なガイドに従ってください。

サイトで SearchWP を起動して実行したら、次のステップはプラグインのコピーを有効にすることです。

これを行うには、WordPress ダッシュボードに移動し、上部パネルの [ SearchWP ] ボタンの下にある [ライセンスを有効にする] をクリックします。

click Activate License

その後、ライセンス キーを [ライセンス]フィールドに入力し、 [アクティブ化]を押します。

press Activate

SearchWP のコピーを有効にしたら、検索のカスタマイズを開始できます。

ステップ 2: 検索のカスタマイズを開始する

開始するには、SearchWP 設定で [エンジン] をクリックします。

go to Engines

このタブで検索エンジンを追加、削除、カスタマイズできます。

your search engines

SearchWP は、インストール後に既定の検索エンジンを自動的に作成します。

既存のすべての検索フォームにリンクされているため、カスタマイズすることで、サイト全体で検索がどのように機能するかを制御できます.

たとえば、検索ソースのリストを管理したり、WordPress に新しいコンテンツ属性を考慮させたり、検索を特定のカテゴリに限定したりできます。

SearchWP を使用すると、検索エンジンを無制限に追加して、サイトの個々の検索フォームに接続できます。

そのおかげで、さまざまなビジネス ニーズに合わせてカスタム検索フォームをすばやく作成し、サイトの好きな場所に配置できます。

このチュートリアルでは、サイト全体で検索がどのように機能するかをカスタマイズしたいので、既定の検索エンジンを編集します。

まず、検索ソースのリストを構成して、WordPress がコンテンツを検索する場所を指定しましょう。

検索ソースを管理する

開始するには、[既定の検索エンジン] セクションの下にある[ソースと設定]ボタンを押します。

click Sources and Settings

ここで、WordPress が一致を検索する場所を管理できます。 デフォルトでは、 PostsPages 、およびMediaファイルを検索します。

uncheck search sources

検索ソースを削除するには、横にあるチェックボックスをオフにします。 たとえば、サイトの検索を投稿のみに限定してみましょう。

これを行うには、投稿以外のすべてのソースのチェックを外し、[完了] をクリックして変更を保存します。

left only Posts search source active

検索ソースのリストを設定したら、WordPress に投稿の属性と分類法を考慮させて、検索を強化しましょう。

検索属性を構成する

開始するには、[投稿の検索ソース] セクションにある [属性の追加/削除] ボタンをクリックします。

click Add Remove attributes

表示されたウィンドウで、WordPress が検索を実行するときに考慮したい属性と分類法を指定できます。

add new attributes

特定のカスタム フィールドを検索可能にするには、[カスタム フィールド] フィールドをクリックしてその名前を入力します。

click on the Custom Fields field

Any Meta Keyショートカットもあり、これを追加すると、既存のすべての検索フィールドを一度に検索可能にすることができます。

click Add Any Meta key

カスタム フィールドの追加が完了したら、WordPress のインデックス タクソノミーも作成しましょう。

WordPress では、タクソノミーはコンテンツとデータを分類する方法です。 たとえば、投稿のカテゴリ、タグ、フォーマットなどです。

新しい分類法を検索可能にするには、[分類法] フィールドをクリックし、目的の分類法を選択します。

click on the Taxonomies field

たとえば、WordPress が検索を実行するときに投稿タグを考慮するようにしましょう。 これを行うには、ドロップダウン メニューから [タグ] オプションを選択します。

choose the Tags taxonomy

TitleContentSlugExcerptなどのデフォルトの投稿属性の横にあるチェックボックスをオフにすることで、WordPress がこれらの属性を無視するようにすることもできます。

uncheck the default attributes

投稿の検索ソース属性の管理が完了したら、[完了]をクリックして変更を保存します。

press Done

では、検索を絞り込んで訪問者により関連性の高い結果を表示する方法を見てみましょう。

特定の投稿カテゴリに限定して検索する

開始するには、[ルールの編集] ボタンを押します。

click Edit Rules

次に、[ルールの追加] をクリックします。

click Add Rule

ここで、WordPress が検索結果のコンテンツをフィルタリングするルールを追加できます。

there are no rules by default

たとえば、特定のカテゴリを検索から除外するルールを追加したり、その逆のルールを追加して検索を制限したりできます。

テスト サイトでの検索をニュースカテゴリに制限したいとします。

これを行うには、まず [次の場合にのみエントリを表示] オプションと [カテゴリ] 分類を選択していることを確認してください。

limit search to a specific category

次に、検索を制限したいカテゴリの名前を一番右のフィールドに入力します。 私たちの場合、それはNewsになります。

specify a category

検索エンジンのルールのカスタマイズが完了したら、[完了] をクリックして変更を保存します。

click Done to save your rules

検索のカスタマイズに満足したら、最終ステップに進み、検索エンジンを保存します。

検索エンジンを保存

これを行うには、SearchWP ダッシュボードの右上隅にある [エンジンを保存] を押します。

click Save Engines

次に、[インデックスの再構築] をクリックして、WordPress にすべてのコンテンツのインデックスを再構築させ、新しい検索エンジン設定を適用させます。

click Rebuild Index

それでおしまい。 コードを 1 行も書かずに、必要に応じて検索を完全にカスタマイズしました。

新しい検索をテストして、カスタマイズに従って機能することを確認しましょう。

ステップ 3: 新しい検索をテストする

開始するには、Web サイトにアクセスしてテスト検索を実行します。 たとえば、投稿タグを検索可能にしたので、タグだけで投稿を検索してみましょう。

私たちのテスト サイトには、「更新」タグが付いた「WordPress の新機能」という投稿があります。

このタグで検索して、投稿が見つかるかどうか見てみましょう。

press Find Results

タイトル、抜粋、またはコンテンツに「更新」という単語がないにもかかわらず、投稿を見つけました。

we found the post

これは、検索エンジンが一致を探すときに投稿タグを考慮するようになったことを意味します。

また、サイトでの検索が「ニュース」カテゴリに制限されていることも確認しましょう。

これを行うには、「WordPress」を検索します。これは、WordPress に関連する投稿が他のカテゴリに多数あるためです。

make another search

取得した検索結果の中で、ニュースカテゴリの投稿のみが表示されていることがわかります。

we found the right posts

これは、WordPress がニュースのみを検索するという、検索エンジンに追加したルールが正常に機能することを意味します。

これで、検索をカスタマイズする最も簡単な方法を学習できました。 それでは、プラグインを使用せずにそれを行う方法を見てみましょう。

プラグインなしで WordPress でカスタム検索を作成する

プラグインなしで検索をカスタマイズするには、テーマを編集する必要があります。

これを行う最も安全な方法は、サイトで現在使用しているテーマの子テーマを作成することです。

このように、子テーマに変更を加えても、親テーマは変更されないため、重大なエラーが発生した場合にすばやく切り替えることができます。

さらに、子テーマを使用すると、変更を失うことなく親テーマを更新できます。 子テーマの作成方法の詳細については、この子テーマの作成方法のチュートリアルをご覧ください。

子テーマを作成してアクティブ化したら、検索のカスタマイズを開始できます。

開始するには、WordPress ダッシュボードの [外観] » [テーマ ファイル エディター]に移動します。

go to Theme Files Editor

次に、右側のパネルでfunctions.phpファイルを見つけてクリックします。

click the function file

その後、サイトで検索するために行うカスタマイズに応じて、以下の手順に従ってください。

タグとカテゴリで投稿を検索できるようにする

プラグインなしで投稿タグとカテゴリをサイトで検索可能にするには、次のコードをテーマのfunctions.phpファイルに追加します。

/*
 * ----------------------------------------------------------
 *
 * Search Posts by Tags and Categories
 *
 * ----------------------------------------------------------
 */
 
 
/**
 * Join the terms, term_relationship, and term_taxonomy tables.
 *
 * @global $wpdb
 *
 * @param string $join  The JOIN clause.
 * @param object $query The current WP_Query instance.
 *
 * @return string The JOIN clause.
 */
function search_custom_posts_join( $join, $query ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $join;
	}
 
	$join .= "
    LEFT JOIN
    (
        {$wpdb->term_relationships}
        INNER JOIN
            {$wpdb->term_taxonomy} ON {$wpdb->term_taxonomy}.term_taxonomy_id = {$wpdb->term_relationships}.term_taxonomy_id
        INNER JOIN
            {$wpdb->terms} ON {$wpdb->terms}.term_id = {$wpdb->term_taxonomy}.term_id
    )
    ON {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id ";
 
	return $join;
}
 
add_filter( 'posts_join', 'search_custom_posts_join', 10, 2 );
 
/**
 * Modify the WHERE clause to include searches against taxonomies.
 *
 * @global $wpdb
 *
 * @param string   $where The WHERE clause.
 * @param WP_Query $query The current WP_Query instance.
 *
 * @return string The WHERE clause.
 */
function search_custom_posts_where( $where, $query ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $where;
	}
 
	// Get additional where clause for the user.
	$user_where = '';
 
	$user_id = get_current_user_id();
	$status  = array( "'publish'" );
 
	// Include private posts if the user is logged in.
	if ( $user_id ) {
		$status[]    = "'private'";
		$user_where .= " AND {$wpdb->posts}.post_author = {$user_id}";
	}
 
	$user_where .= " AND {$wpdb->posts}.post_status IN( " . implode( ',', $status ) . " ) ";
 
	$where .= " OR (
                    {$wpdb->term_taxonomy}.taxonomy IN( 'category', 'post_tag' )
                    AND
                    {$wpdb->terms}.name LIKE '%" . esc_sql( get_query_var( 's' ) ) . "%'
                    {$user_where}
                )";
 
	return $where;
}
 
add_filter( 'posts_where', 'search_custom_posts_where', 10, 2 );
 
/**
 * Set the GROUP BY clause to post IDs.
 *
 * @global $wpdb
 *
 * @param string   $groupby The GROUPBY clause.
 * @param WP_Query $query   The current WP_Query instance.
 *
 * @return string The GROUPBY clause.
 */
function search_custom_posts_groupby( $groupby, $query ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $groupby;
	}
 
	return "{$wpdb->posts}.ID";
}
 
add_filter( 'posts_groupby', 'search_custom_posts_groupby', 10, 2 );

終了したら、 [ファイルの更新] ボタンを押して変更を保存します。

press Done

これで、サイトの訪問者はタグとカテゴリで投稿を検索できるようになりました。

コメントの内容と作成者名による検索を有効にする

プラグインを使用せずにサイトでコメントと著者名を検索できるようにするには、次のコードをテーマのfunctions.phpファイルに追加します。

/*
 * ----------------------------------------------------------
 *
 * Search by Comment Content and Author Names
 *
 * ----------------------------------------------------------
 */
 
 
/**
 * Joins the comments and posts tables.
 *
 * @global $wpdb
 *
 * @param string $join  The JOIN clause.
 * @param object $query The current WP_Query instance.
 *
 * @return string The JOIN clause.
 */
function search_custom_comments_posts_join( $join, $query ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $join;
	}
 
	$join .= ' LEFT JOIN ' . $wpdb->comments . ' ON ' . $wpdb->posts . '..comment_post_ID ';
 
	return $join;
}
 
add_filter( 'posts_join', 'search_custom_comments_posts_join', 10, 2 );
 
/**
 * Modify the WHERE clause to include searches against comments.
 *
 * @global $wpdb
 *
 * @param string   $where The WHERE clause.
 * @param WP_Query $query The current WP_Query instance.
 *
 * @return string The WHERE clause.
 */
function search_custom_comments_posts_where( $where, $query ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $where;
	}
 
	$where = preg_replace(
		"/\(\s*" . $wpdb->posts . ".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
		"(" . $wpdb->posts . ".post_title LIKE $1) OR (" . $wpdb->comments . ".comment_author LIKE $1) OR (" . $wpdb->comments . ".comment_content LIKE $1)",
		$where
	);
 
	return $where;
}
 
add_filter( 'posts_where', 'search_custom_comments_posts_where', 10, 2 );
 
/**
 * Prevent search results duplicates.
 *
 * @param string   $distinct The DISTINCT clause.
 * @param WP_Query $query    The current WP_Query instance.
 *
 * @return string The DISTINCT clause.
 */
function search_custom_comments_posts_distinct( $distinct, $query ) {
 
	if ( ! is_main_query() || ! is_search() ) {
		return $distinct;
	}
 
	return 'DISTINCT';
}
 
add_filter( 'posts_distinct', 'search_custom_comments_posts_distinct', 10, 2 );

完了したら、エディターの下部にある[ファイルを更新] ボタンをクリックして、変更を保存します。

click Done

これで、訪問者はコメントの内容と作成者名で検索できるようになりました。

投稿カスタム フィールドによる検索を有効にする

プラグインを使用せずにサイトでカスタム フィールドを検索可能にするには、次のコードをテーマのfunctions.phpファイルに追加します。

/*
 * ----------------------------------------------------------
 *
 * Search by Post Custom Fields
 *
 * ----------------------------------------------------------
 */
 
 
/**
 * Joins the postmeta and posts tables.
 *
 * @global $wpdb
 *
 * @param string $join  The JOIN clause.
 * @param object $query The current WP_Query instance.
 *
 * @return string The JOIN clause.
 */
function search_custom_meta_posts_join( $join, $query ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $join;
	}
 
	$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '..post_id ';
 
	return $join;
}
 
add_filter( 'posts_join', 'search_custom_meta_posts_join', 10, 2 );
 
/**
 * Modify the WHERE clause to include searches against postmeta.
 *
 * @global $wpdb
 *
 * @param string   $where The WHERE clause.
 * @param WP_Query $query The current WP_Query instance.
 *
 * @return string The WHERE clause.
 */
function search_custom_meta_posts_where( $where ) {
 
	global $wpdb;
 
	if ( ! is_main_query() || ! is_search() ) {
		return $where;
	}
 
	$where = preg_replace(
		"/\(\s*" . $wpdb->posts . ".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
		"(" . $wpdb->posts . ".post_title LIKE $1) OR (" . $wpdb->postmeta . ".meta_value LIKE $1)", $where );
 
	return $where;
}
 
add_filter( 'posts_where', 'search_custom_meta_posts_where', 10, 2 );
 
/**
 * Prevent search results duplicates.
 *
 * @param string   $distinct The DISTINCT clause.
 * @param WP_Query $query    The current WP_Query instance.
 *
 * @return string The DISTINCT clause.
 */
function search_custom_meta_posts_distinct( $distinct, $query ) {
 
	if ( ! is_main_query() || ! is_search() ) {
		return $distinct;
	}
 
	return 'DISTINCT';
}
 
add_filter( 'posts_distinct', 'search_custom_meta_posts_distinct', 10, 2 );

完了したら、エディターの下部にある[ファイルを更新] ボタンを押して、変更を保存します。

press Done

これで、訪問者はカスタム フィールドで投稿を検索できます。

この記事では、プラグインなしでサイトにカスタム検索を作成する方法と、この目的のためにプラグインを使用する方がはるかに便利な理由を学びました.

意思決定を行い、サイトで使用する方法を選択するのに役立つことを願っています.

数回のクリックでサイトの検索をカスタマイズする準備はできましたか? ここで SearchWP を開始できます。

サイトのカスタム テーマを作成する方法をお探しですか? カスタム WordPress テーマの作成方法については、段階的なチュートリアルをご覧ください。

検索結果ページをカスタマイズしたいですか? WordPress の検索結果ページをカスタマイズする方法ガイドに従ってください。