
サイト全体からページ検索するということはほとんどありません。
検索して「サイトマップ」ページとか出てきてもほとんど意味ないですもんね。
実際、コーポレートサイトなら、商品情報とか実績の中からのみ検索するケースがほとんどです。
そこでここでは、検索ターゲットをカスタム投稿タイプ(ここでは例として”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テーマを、子テーマとして購入できます。
この子テーマを有効化するだけで、現在お使いのデザインテーマにこの事例解決の機能が自動付与されます。
デザインが入っていないため、一般より格段に低い価格(事例の難易度により200円~1.3万円)です。
※ テーマは買い切りです
※ 自由に改変してお使いいただいて構いません
※ すでに子テーマでサイト運用されている方は、当該子テーマをマージしてください
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!