Wordpressで絞り込み検索機能を持ったサイトを制作中です。
FE Advanced Searchを使って検索を実装しました。
検索結果のページをターム毎に分けて表示させ、
その一つ目の記事の前に見出しを付けたいと思っているのですが・・・。
カスタム投稿:corporate
カスタム分類:cat_areas(都道府県)
カスタム分類に属するターム:各都道府県名
複雑なPHPコードの記述はできないので(知識がありません。。)
記事のループの内側でis_object_in_term を使って都道府県ごとに記事を表示させて、
そのループを都道府県の数だけ回すことにしてみました・・・。
記述したコード1 search.php
<div class="searchbox"> <?php feas_search_form(); ?> </div> <div class="hasei_subtitle01"><span>検索結果</span></div> <div class="shop_area"> <?php get_template_part( 'hokkaido'); ?> <?php get_template_part( 'aomori'); ?> ~都道府県分を追加 <?php get_template_part( 'okinawa'); ?> </div>
記述したコード2 hokkaido.php (エリアごとのループ設定)
<?php if (have_posts()) : ?> <?php while(have_posts()) : the_post(); ?> <?php if ($wp_query->current_post == 0) { ?> <p class="category">北海道</p> <?php } ?> <?php if ( is_object_in_term($post->ID, 'cat_areas','hokkaido') ): ?> <div class="company"> <p class="name"><?php the_title(); ?></p> ” ループしたい内容(カスタムフィールド値) ” </div> <?php endif; ?> <?php endwhile; else : ?> <?php endif; ?>
試したこと
「current_post」 の条件分岐部分を「is_object_in_term」の内側に設定すると
<p class="category">北海道</p>が表示されなく検索結果だけが表示されてしまったので 「is_object_in_term」の外にだしました。順序としては・・・
「is_object_in_term」で都道府県の記事を選び出し、その一つ目の記事の前にタイトルを付ける。。
かなと考えたのですが・・・
結果
検索結果として
記事のない都道府県の見出しが表示されてしまいます。
1件でも投稿があると、絞り込み検索にかからない都道府県の見出しでも表示はされません。
例えば、北海道、青森、秋田と1件の記事がなく、岩手については1件記事がある。
その場合、検索項目に岩手が引っ掛からないとき、
北海道、青森、秋田の見出しのみが表示されてしまう。。
検索項目に岩手が引っ掛かる場合、北海道、青森、秋田の見出し、岩手は見出しと項目。。。
といった表示になります。。
投稿記事のない場合、見出しも表示されないようにするには
どうすればよいのか。。。間違っている点や記述の方法等
みなさまのお知恵をお借りしたくこちらに投稿いたしました。。
どうぞよろしくお願いいたします!!
あなたの回答
tips
プレビュー