###犬の写真ギャラリーページ内で、キーワード検索した犬の写真(と文章)だけを表示したい
①通常表示時
下のようなカスタム投稿ページがあります。(犬の写真ギャラリーページ)
②理想の検索結果
その中の検索フォームにキーワード(例:ちわわ)を入力すると、そのキーワードが含まれるタイトル&写真を表示したいのです。
③現実の検索結果
しかしながら、何もいじっていないノーマルな検索フォームから検索をすると、以下のようになってしまいます。
これを②理想の検索結果に持っていくためにしなければいけないことが、いまいちわからないでいます。
自分で色々と調べてみたりしたんですが、「特定のページを検索結果から除外」で出てくるサイトのほとんどはfunction.php内に何かしらの記述をするというものでした。(それかプラグイン「Search Exclude」を使用する方法)
でもそれをすると、この犬の写真ギャラリーページ内の検索機能だけでなく、全体にまで影響してしまうのではないかな~と思うんです。
このページ内だけの検索機能も欲しいですが、サイトのトップ(右上とか)には通常のサイト内検索機能も残しておきたくって……。
function.phpに記述しちゃうと、どちらか片方しか実現できないように思えまして。
とりあえず、以下のコード(質問用に作ったので実際はちょっと違います)でページを作っています。
php
1<?php // www.domain.com/gallery/のページのコード(固定ページ) page-gallery.php ?> 2<?php get_header(); ?> 3 <div class="container"> 4 <div class="search-form"> 5 <?php get_search_form(); ?> 6 </div> 7 <?php 8 $args = array ( 9 'posts_per_page'=> 8, 10 'paged' => $paged, 11 'post_type' => 'dog', 12 'tax_query' => array ( 13 array ( 14 'taxonomy' => 'taxonomy_dog', 15 'field' => 'slug', 16 'terms' => array ( 17 'term_dog' 18 ), 19 ) 20 ) 21 ); 22 ?> 23 <?php $the_query = new WP_Query( $args ); ?> 24 <?php if ( $the_query->have_posts() ) : ?> 25 <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> 26 <?php $dog_photo = get_field('dog_photo'); ?> 27 <div class="search-result"> 28 <dl class="text-center"> 29 <dt><a href="<?php echo $dog_photo['sizes']['large']; ?>"><?php echo $dog_photo['sizes']['small']; ?></a></dt> 30 <dd><?php the_title(); ?></dd> 31 </dl> 32 </div> 33 <?php endwhile; ?> 34 <?php endif; ?> 35 <?php if (function_exists('wp_pagenavi')) : ?> 36 <nav aria-label="ページネーション"> 37 <?php wp_pagenavi(array('query' => $the_query)); ?> 38 </nav> 39 <?php endif; ?> 40 <?php wp_reset_query(); ?> 41 </div> 42<?php get_footer(); ?>
で、get_search_form()で呼び出されるものはこちら。
php
1<?php // searchform.php ?> 2<form role="search" method="get" id="searchform" class="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>"> 3 <div class="form-group has-search"> 4 <label class="screen-reader-text" for="s"><?php _x( 'Search for:', 'label' ); ?></label> 5 <span class="fa fa-search form-control-feedback"></span> 6 <input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" class="form-control" placeholder="検索"> 7 </div> 8</form>
最後に search.php はこちら。
php
1<?php // search.php ?> 2<?php get_header(); ?> 3 <div class="container"> 4 <?php 5 global $wp_query; 6 $total_results = $wp_query->found_posts; 7 $search_query = get_search_query(); 8 ?> 9 <h1 class="text-white"><?php echo $search_query; ?>の検索結果<span class="small">(<?php echo $total_results; ?>件)</span></h1> 10 </div> 11 <div class="container"> 12 <?php if( $total_results > 0 ): ?> 13 <?php if(have_posts()): ?> 14 <?php while(have_posts()): the_post(); ?> 15 <div class="search-result"> 16 <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4> 17 <p><?php the_excerpt(); ?></p> 18 </div> 19 <?php endwhile; ?> 20 <?php endif; ?> 21 <?php else: ?> 22 <div class="search-result text-center"> 23 <h4><?php echo $search_query; ?> に一致する情報は見つかりませんでした。</h4> 24 </div> 25 <?php endif; ?> 26 <?php if (function_exists('wp_pagenavi')) : ?> 27 <nav aria-label="ページネーション"> 28 <?php wp_pagenavi() ?> 29 </nav> 30 <?php endif; ?> 31 </div> 32<?php get_footer(); ?>
きっとsearch.phpをどうにか変えればいけるんだろうな~と思ってはいるんですが、その方法がどうしてもわからないでいます。
どなたかお教えいただけませんでしょうか。何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー