WordPress
カスタマイズ事例

WORDPRESS CUSTOMIZATION

カスタム投稿に限定してフリーワードによるページ検索をおこなう テーマ販売あり

サイト全体からページ検索するということはほとんどありません。
検索して「サイトマップ」ページとか出てきてもほとんど意味ないですもんね。
実際、コーポレートサイトなら、商品情報とか実績の中からのみ検索するケースがほとんどです。

そこでここでは、検索ターゲットをカスタム投稿タイプ(ここでは例として”result”というカスタム投稿タイプで書いています)に絞り込んで、ヒットするページの一覧を表示してみましょう。

テーマのsearch.phpに下記を記述します。
(出力するhtmlは私が適当に書いたものです。ご自身のhtmlにそう形で流用してください)

global $wpdb;
global $wp_query;
global $search_query;

$total_results = $wp_query->found_posts;
$search_query  = get_search_query();
?>
<?php echo do_shortcode( '[search_box]' ); ?>
<?php
$html = '<p>検索キーワードに一致する事例はありません。</p>';
if ( $total_results > 0 ) {
	if ( have_posts() ) {
		$html = '';
		while ( have_posts() ) : the_post();
			$html .= '<div><a href="' . get_the_permalink( $post->ID ) . '">' . get_the_title( $post->ID ) . '</a></div>';
		endwhile;
	}
}
echo $html;

次に、テーマのfunctions.phpに下記を記述します。

/* 検索窓をショートコード化します */
if ( ! function_exists( 'search_box' ) ) {
	function search_box() {
		$search_query = get_search_query();
		$html = '<form role="search" method="get" id="searchform" class="searchform" action="' . home_url( '/' ) . 'result/">
        <div>
          <input type="text" value="' . $search_query . '" name="s" id="s" />
          <input type="hidden" name="post_type" value="result">
          <input type="submit" id="searchsubmit" value="検索" />
        </div>
      </form>';
		return $html;
	}
	add_shortcode( 'search_box', 'search_box' );
}

/* 空文字検索ではresultにリダイレクト */
function empty_search_redirect( $wp_query ) {
	if ( $wp_query->is_main_query() && $wp_query->is_search && ! $wp_query->is_admin ) {
		$s = $wp_query->get( 's' );
		if ( empty( $s ) ) {
			wp_safe_redirect( home_url( '/' ) . 'result' );
			exit;
		}
	}
}
add_action( 'parse_query', 'empty_search_redirect' );

最後に、検索窓を表示したい場所でショートコード
[search_box]
を呼べば完成です。

※ 複合キーワードでも検索できますが、全角スペース区切りは無効です。
  有効にするには、WordPressに標準でバンドルされているプラグイン”WP Multibyte Patch”を
  有効にしてください。
 
 
ちなみに複数のカスタム投稿タイプを検索対象にしたければ、この事例の延長でこちらの事例を試してください。
■ 複数のカスタム投稿からフリーワード検索をおこなう
https://100webdesign.jp/services/wordpress/wp_result/wp_result-23031/

【この事例を解決するためのWordPressテーマを購入できます】

現在あなたが利用されているWordPressテーマを活かしたまま、このページの事例を解決できるWordPressテーマを、子テーマとして購入できます。
この子テーマを有効化するだけで、現在お使いのデザインテーマにこの事例解決の機能が自動付与されます。
デザインが入っていないため、一般より格段に低い価格(事例の難易度により200円~1.3万円)です。
※ テーマは買い切りです
※ 自由に改変してお使いいただいて構いません
※ すでに子テーマでサイト運用されている方は、当該子テーマをマージしてください

【100ウェブ新着情報メルマガ】

WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!