SearchWPブログ

WordPressのチュートリアル、ヒント、リソースでビジネスを成長させる

WordPressのフォーム送信を検索結果に含める方法

フォームを通じてフィードバック、レビュー、その他の情報を収集する場合、そのデータをWordPressサイトで検索可能にすることができます。

残念ながら、WordPressのデフォルトの検索機能にはフォームデータが含まれていません。これは、貴重な情報が実質的にユーザーから隠されていることを意味します。

しかし、SearchWPを使用すると、フォームの送信を検索プロセスに簡単に含めることができます。アンケート、レビュー、その他の種類のフォームを管理している場合でも、SearchWPはこれらのコンテンツを発見可能にするのに役立ちます。

この記事では、WordPressのフォーム送信を検索結果に含める方法を説明します。

Note: Before we proceed with the tutorial, please note that showing form entries as search results requires editing code. You need to have an extensive grasp of coding knowledge or need to hire a developer for this to work. If you require any assistance at any point, then please reach out to our support team. We’d be happy to help! 

WordPress検索にフォーム送信を含める理由

WordPressでフォーム送信を検索可能にすることは、ウェブサイトの機能性とユーザーエクスペリエンスを大幅に向上させることができます。

ユーザーはフォームを通じて情報を送信することが多く、後で送信した内容にアクセスしたり思い出したりする必要がある場合があります。フォーム送信を検索に含めることで、ユーザーはサイト管理者に連絡することなく、自分の送信をすばやく見つけることができます。

たとえば、ユーザーがサポートリクエストまたはアプリケーションを送信した場合、送信を簡単に検索してステータスを確認したり、詳細を確認したりできます。

フォーム送信には、サイトの他の場所ではすぐに入手できない貴重なコンテンツも含まれています。これには、アンケート、フィードバックフォーム、またはコメントフォームからのユーザー生成コンテンツが含まれる場合があります。

ユーザーが特定のフォーム送信を検索して新しいものを1つ作成する代わりに、重複を回避することもできます。

それでは、WordPress検索にフォーム送信を簡単に含める方法を見てみましょう。

WordPressでフォーム送信を検索可能にする

WordPressでさまざまなフォームを検索する最も簡単な方法は、SearchWPを使用することです。これはWordPress向けの最高の検索プラグインであり、最も人気のある連絡フォームプラグインのいくつかに強力な拡張機能を提供します。

現在、SearchWPはWPFormsとGravity Formsをサポートしています。これらのプラグインからのフォームを検索エンジンのソースとして簡単に追加できるため、ユーザーはフォームコンテンツを簡単に検索して発見できます。

それに加えて、SearchWPはデフォルトの検索の制限を克服し、ウェブサイトで重要なすべてのものをインデックスするように設計されています。これには、カスタムフィールド、カテゴリ、タグ、製品詳細、メディアファイルなどが含まれます。

まず、SearchWPのウェブサイトにアクセスして、新しいアカウントを作成する必要があります。

SearchWP

サインアップしたら、次のステップはSearchWPプラグインをダウンロードすることです。

これを行うには、アカウントエリアに移動して「ダウンロード」タブに切り替えるだけです。ここから、Download SearchWPボタンをクリックして、プラグインファイルをコンピューターに保存できます。

アカウントエリアからSearchWPプラグインをダウンロード

ここから、サイトにSearchWPプラグインをインストールしてアクティブ化できます。

これにヘルプが必要な場合は、WordPressプラグインのインストール方法に関するこの記事を参照してください。

プラグインをアクティブ化した後、SearchWPのオンボーディングウィザードが表示されます。「オンボーディングウィザードを開始」ボタンをクリックして、画面の指示に従ってプラグインを構成してください。

オンボーディングウィザード SearchWP

次に、WordPressでフォームの送信を検索可能にするための拡張機能をインストールする必要があります。このチュートリアルでは、WPForms拡張機能を使用して、イベント送信フォームのエントリを検索可能にします。

WordPress管理パネルからSearchWP » Extensionsに移動し、Source – WPForms拡張機能に移動するだけです。ここから、「インストール」ボタンをクリックしてください。

WPForms拡張機能をインストールする

拡張機能が自動的にインストールおよびアクティブ化され、ステータスが「未インストール」からアクティブに変更されるはずです。

検索エンジンをカスタマイズしてフォームの送信を含める

サイトにSearchWPを設定し、WPForms拡張機能を追加したので、次のステップは、フォームの送信を検索可能にするために検索エンジンの設定をカスタマイズすることです。

まず、WordPressダッシュボードから SearchWP » Algorithm ページに移動し、新しいエンジンを追加する必要があります。続行するには、「新規追加」ボタンをクリックしてください。

新しいエンジンを追加

次に、新しいウィンドウが補足エンジンで開きます。ここで、新しい検索エンジンのソースを選択できます。

デフォルトでは、SearchWPには投稿、ページ、ユーザー、メディア、およびWPFormsで作成したすべてのフォームがソースとして含まれます。

新しいエンジンを追加してフォームを選択する

検索をWPFormsのみに制限するには、フォーム以外のすべてのソースのチェックを外すことができます。特定のフォームのみを検索可能にする必要がある場合は、その特定のフォームを選択するだけです。

たとえば、このチュートリアルでは、イベント送信フォームのみをソースとして選択します。これにより、ユーザーはフォームを通じて送信されたさまざまなイベントを簡単に検索できます。

WPFormsフォームのみを選択する

「エンジンラベル」フィールドで、新しいエンジンの名前を補足から好きなものに変更することもできます。たとえば、新しいエンジンに「WPForms Engine」という名前を付けます。

完了したら、「完了」ボタンをクリックします。

次に、エンジン内のソースとして各フォームが表示されます。次に、属性として使用したいフォームフィールドを選択できます。

属性は、指定されたソースで検索したいフィールドです。編集するには、「属性の追加/削除」ボタンをクリックするだけです。

WPFormsの属性を編集する

次に、使用する属性を選択できる小さなウィンドウが開きます。

ソースに検索させたくないフォームフィールドのチェックを外すだけです。

使用する属性を選択

属性を選択したら、「完了」ボタンをクリックするだけです。

また、スライダーを移動して関連性の重みを調整することもできます。属性のスライダーが右に設定されているほど、その属性は検索結果の位置に大きな影響を与えます。

WPForms エンジンのスライダーを移動

次に、一番上までスクロールして、保存ボタンをクリックして変更を保存する必要があります。

これで、フォームの送信を検索する新しい検索エンジンが正常に作成されました。

エンジンの設定を保存

フォームエントリを検索結果として表示する

フォームの送信を検索する検索エンジンを作成したので、次のステップは、検索結果にWPFormsエントリを表示することです。

注意: 覚えておくべき重要な点は、コードをサイトに実装するには開発スキルが必要であるか、開発者を雇う必要があるということです。これにより、フォームの入力がSearchWPを使用した検索結果として表示されます。

まず、先ほど作成した補足エンジン用の検索フォームを設定する必要があります。名前がs以外の<input>を作成することから始めます。その名前はネイティブのWordPress検索をトリガーするためです。

以下のコードから始めることができます。

<form role="search" method="get" class="search-form" 
      action="<?php echo site_url( 'search-results/' ); ?>">
    <label>
        <span class="screen-reader-text">
            <?php echo _x( 'Search for:', 'label' ) ?>
        </span>
        <input type="search" class="search-field"
            name="searchwp"
            placeholder="<?php echo esc_attr_x( 'Search...', 'placeholder' ) ?>"
            value="<?php echo isset( $_GET['searchwp'] ) ? esc_attr( $_GET['searchwp'] ) : '' ?>"
            title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
    </label>
    <input type="submit" class="search-submit"
        value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</form>

このスニペットには注意すべき点が2つあります。

  1. 使用されている<input>の名前はsearchwpです
  2. フォームのアクションはsite_url( ‘search-results/’ )を指しています。これは、サイトのURLがexample.comの場合、送信時にこのフォームがexample.com/search-results/にリダイレクトされることを意味します。このガイドでは、URLが補足エンジンの結果を表示する目的で作成したページを指していることを前提としています。

検索フォームを作成すると、結果を表示するように指定されたページを指すURLにアクションが設定されます。SearchWPから結果を取得するには、まずカスタムページテンプレートを作成する必要があります。

検索フォームコードとページテンプレートの詳細については、補足エンジンのドキュメントを参照してください。

ここでは、補足エンジンのドキュメントに示されているコードに基づいた、作業を開始するためのテンプレートを示します。

<?php
/* Template Name: SearchWP Results */

global $post;

// Retrieve applicable query parameters.
$search_query = isset( $_GET['searchwp'] ) ? sanitize_text_field( $_GET['searchwp'] ) : null;
$search_page  = isset( $_GET['swppg'] ) ? absint( $_GET['swppg'] ) : 1;

// Perform the search.
$search_results    = [];
$search_pagination = '';
if ( ! empty( $search_query ) && class_exists( '\\SearchWP\\Query' ) ) {
    $searchwp_query = new \SearchWP\Query( $search_query, [
        'engine' => 'wpformsengine', // The Engine name.
        'fields' => 'all',          // Load proper native objects of each result.
        'page'   => $search_page,
    ] );

    $search_results = $searchwp_query->get_results();

    $search_pagination = paginate_links( array(
        'format'  => '?swppg=%#%',
        'current' => $search_page,
        'total'   => $searchwp_query->max_num_pages,
    ) );
}

get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

        <header class="page-header">
            <h1 class="page-title">
				<?php if ( ! empty( $search_query ) ) : ?>
					<?php printf( __( 'Search Results for: %s' ), esc_html( $search_query ) ); ?>
				<?php else : ?>
                    SearchWP Supplemental Search
				<?php endif; ?>
            </h1>

            <!-- BEGIN Supplemental Engine Search form -->
            <form role="search" method="get" class="search-form"
                  action="<?php echo site_url( 'search-results/' ); ?>">
                <label>
					<span class="screen-reader-text">
					<?php echo _x( 'Search for:', 'label' ) ?>
					</span>
                    <input type="search" class="search-field"
                           name="searchwp"
                           placeholder="<?php echo esc_attr_x( 'Search...', 'placeholder' ) ?>"
                           value="<?php echo isset( $_GET['searchwp'] ) ? esc_attr( $_GET['searchwp'] ) : '' ?>"
                           title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
                </label>
                <input type="submit" class="search-submit"
                       value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
            </form>
            <!-- END Supplemental Engine Search form -->
        </header>

		<?php if ( ! empty( $search_query ) && ! empty( $search_results ) ) : ?>
			<?php  foreach ( $search_results as $search_result ) : ?>
                <article class="page hentry search-result">
					<?php
					switch( get_class( $search_result ) ) {
                        case 'SearchWP\Sources\WPForms\Entry':

                        $form_id = $search_result->form_id;
                        $entry_id = $search_result->entry_id;
                        // NOTE: WPForms Field values are stored in the entry fields property as an array.
                        // Each field has the array key equal to the order they were added to the form editor.
                        $fields = $search_result->fields;

                        ?>
                        <div class="result">
                            Form ID:  <?php echo esc_html( $form_id ); ?><br>
                            Entry ID: <?php echo esc_html( $entry_id ); ?><br>
                            Name:     <?php echo esc_html( $fields[0]['value'] ); ?><br>
                            Email:    <?php echo esc_html( $fields[1]['value'] ); ?><br>
                            Subject:  <?php echo esc_html( $fields[5]['value'] ); ?><br>
                            Comment:  <?php echo esc_html( $fields[2]['value'] ); ?><br>
                        </div>
                        <?php
                        break;
					}
					?>
                </article>
			<?php endforeach; ?>

			<?php if ( $searchwp_query->max_num_pages > 1 ) : ?>
                <div class="navigation pagination" role="navigation">
                    <h2 class="screen-reader-text">Results navigation</h2>
                    <div class="nav-links"><?php echo wp_kses_post( $search_pagination ); ?></div>
                </div>
			<?php endif; ?>
		<?php elseif ( ! empty( $search_query ) ) : ?>
            <p>No results found, please search again.</p>
		<?php endif; ?>

    </main> <!-- .site-main -->
</div> <!-- .content-area -->

<?php get_footer(); ?>

次に、補足エンジンページテンプレートの上記のコードをWPFormsの入力用に適応させる必要があります。

ここで、使用できるWPForms用のコードを示します。

<?php

$searchwp = new \SearchWP\Query( 'marketing', [
    'engine' => 'wpforms',
    'fields' => 'all',
] );

foreach ( $searchwp->results as $result ) {
    switch ( get_class( $result ) ) {
        case 'SearchWP\Sources\WPForms\Entry':
			
            $form_id = $search_result->form_id;
            $entry_id = $search_result->entry_id;
            // NOTE: WPForms Field values are stored in the entry fields property as an array.
            // Each field has the array key equal to the order they were added to the form editor.
            $fields = $search_result->fields;
			
            ?>
            <div class="result">
                Form ID:  <?php echo esc_html( $form_id ); ?><br>
                Entry ID: <?php echo esc_html( $entry_id ); ?><br>
                Name:     <?php echo esc_html( $fields[0]['value'] ); ?><br>
                Email:    <?php echo esc_html( $fields[1]['value'] ); ?><br>
                Subject:  <?php echo esc_html( $fields[5]['value'] ); ?><br>
                Comment:  <?php echo esc_html( $fields[2]['value'] ); ?><br>
            </div>
            <?php
        break;

        default:
            // Another Source was added to the SearchWP Engine.
            print_r( $result );
    }
}


コードスニペットでは、この部分の‘engine’ => ‘wpforms’,にあるwpformsをエンジンの名前に置き換えてください。

新しいエンジンの名前は、SearchWP » Algorithmページで見つけることができます。たとえば、コードスニペットのwpformsをwpformsengineに置き換えます。

新しいエンジンの名前をコピー

WPFormsの入力を結果として表示する方法の詳細については、WPFormsドキュメントを参照してください。

最後に、さらにサポートが必要な場合は、チームがいつでもお手伝いします。当社のサポートチームにご連絡いただければ、喜んでお手伝いさせていただきます!

この記事で、WordPressのフォーム送信を検索結果に含める方法を学んでいただけたことを願っています。また、WordPressのMeta Boxフィールドを検索に追加する方法およびWordPressサイトの検索アクティビティを追跡する方法に関するガイドも参照することをお勧めします。

よりパーソナライズされた優れたWordPress検索エクスペリエンスを作成する準備はできましたか?今すぐ SearchWP を使い始めましょう! 

著者アバター
Aazim Akhtar

今日からより良いWordPress検索エクスペリエンスを作成しましょう

役に立たない検索結果で訪問者を失うことはもうありません。SearchWPを使用すると、独自のスマートなWordPress検索をすばやく簡単に作成できます。

Get SearchWP Now
複数の検索エンジンアイコン