この実装、面倒なら代行します
サイト全体からページ検索するということはほとんどありません。
検索して「サイトマップ」ページとか出てきてもほとんど意味ないですもんね。
実際、コーポレートサイトなら、商品情報とか実績の中からのみ検索するケースがほとんどです。
そこでここでは、検索ターゲットをカスタム投稿タイプ(ここでは例として”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カスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。