WordPressで検索ページを開発する方法


  1. テーマファイルでの検索ページの作成:

    • WordPressのテーマフォルダ内にsearch.phpというファイルを作成します。

    • search.phpファイル内には、検索結果を表示するためのコードを記述します。

    • 例えば、以下のようなコードをsearch.phpに追加することができます:

      <?php get_header(); ?>
      <div id="primary">
      <div id="content" role="main">
       <?php if ( have_posts() ) : ?>
         <h1 class="page-title">
           <?php printf( __( 'Search Results for: %s', 'your-theme-textdomain' ), '<span>' . get_search_query() . '</span>' ); ?>
         </h1>
         <?php while ( have_posts() ) : the_post(); ?>
           <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
             <header class="entry-header">
               <h2 class="entry-title">
                 <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'your-theme-textdomain' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a>
               </h2>
             </header>
             <div class="entry-summary">
               <?php the_excerpt(); ?>
             </div>
           </article>
         <?php endwhile; ?>
       <?php else : ?>
         <h1 class="page-title">
           <?php _e( 'No results found', 'your-theme-textdomain' ); ?>
         </h1>
         <p><?php _e( 'Sorry, but nothing matched your search terms. Please try again with some different keywords.', 'your-theme-textdomain' ); ?></p>
       <?php endif; ?>
      </div>
      </div>
      <?php get_sidebar(); ?>
      <?php get_footer(); ?>
    • 上記のコードは、簡単な検索結果の表示テンプレートです。テーマのデザインに合わせてカスタマイズすることができます。

  2. カスタム検索フォームの作成:

    • 検索フォームをカスタマイズする場合は、searchform.phpというファイルをテーマフォルダ内に作成します。

    • searchform.phpファイル内には、検索フォームのHTMLコードを記述します。

    • 例えば、以下のようなコードをsearchform.phpに追加することができます:

      <form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
      <label>
       <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label', 'your-theme-textdomain' ); ?></span>
       <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder', 'your-theme-textdomain' ); ?>" value="<?php echo get_search_query(); ?>" name="s" />
      </label>
      <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'your-theme-textdomain' ); ?>" />
      </form>
    • 上記のコードは、検索フォームのテンプレートです。CSSスタイルシートを使用してデザインをカスタマイズすることができます。

  3. テーマのfunctions.phpファイルでのカスタム検索の制御:

    • functions.phpファイルは、テーマの機能をカスタマイズするためのファイルです。

    • カスタム検索の動作を制御するために、functions.phpファイールに以下のコードを追加します:

      function custom_search_query($query) {
      if ( !is_admin() && $query->is_search ) {
       // 検索結果から特定のカテゴリーを除外する場合は以下のように条件を追加します
       // $query->set( 'cat', '-1,-2,-3' );
      }
      return $query;
      }
      add_filter( 'pre_get_posts', 'custom_search_query' );
    • 上記のコードは、カスタム検索クエリを実行するためのフィルターを追加します。例えば、特定のカテゴリーからの検索結果を除外する場合に使用することができます。