[ 解決済 ] VK Filter Search Proの検索結果ページについて
[ 解決済 ] VK Filter Search Proの検索結果ページについて
-
投稿者投稿
-
2022年1月13日 4:39 PM #60411
I.H.参加者■ WordPress のバージョン
5.8.3■ テーマ・プラグインは全て最新版で確認してください。
確認しました。■ テーマの種類
その他■ 関連しそうなプラグインを一つづつ停止して症状が改善するか確認してください。
確認しました。■ プラグインの種類・バージョン
プラグイン:VK Filter Search Pro 1.5.3(購入日:2021年12月末)
テーマ:Twenty Twenty-One 1.0(子テーマを設けカスタマイズ)■ 期待する動作
VK Filter Search Proは特定カテゴリーの検索にて使用し、それとは別にサイト全体のサイト内検索を別な仕組みにてもう一つ設置を予定しており、検索結果ページをそれぞれ異なるレイアウトにすることを考えております。その場合、検索結果ページのテンプレートを複数作成しようと思いましたが、その方法が分かりません。
どちらかの検索機能のテンプレートをsearch.phpにし、もうひとつの検索機能のテンプレートを別に用意するところまでは想定できますが、そこからの具体的な方法が分からない為ご教授願います。
■ 自分で試した事
上記の通り、検索用テンプレートを複数用意の必要があるとの理解までしか試しておりません。■ 症状が発生するブラウザ
Google Chrome■ 実際の症状
上記の通り思案段階でストップしております。2022年1月13日 5:12 PM #60412> それぞれ異なるレイアウト
これは VK Blocks Pro の投稿リストで選択できるレイアウトのレベルですか?
それとも1件分自分で全部書く想定ですか?2022年1月14日 9:12 AM #60437
I.H.参加者ご連絡ありがとうございます。
ベクトル社の製品はVK Filter Search Pro以外は使用しておりません。
状況としましては、サイト内検索をWordpressデフォルトの検索機能を使用し、その検索結果ページをテンプレートsearch.phpで作成しています。
それとは別に特定カテゴリーの検索にVK Filter Search Proを用いており、こちらの検索結果ページのテンプレートの作成をどうしたらよいかとの状況です。上記二つの検索機能の検索結果ページは各々異なる体裁にする予定です。よってテンプレートファイルを各々用意する必要があるとの認識でいます。
ただし、Wordpressの仕様では検索結果ページのテンプレートファイルは、優先度順にsearch.php > index.phpしかありません。ひとつのサイトでVK Filter Search Proを使用し、WordPressデフォルトの検索機能を併用する事例があろうかと思いますので、その場合の検索結果ページの設置についてご教授いただきたいです。
宜しくお願いいたします。
2022年1月14日 11:14 AM #60447
I.H.参加者上記に追記します。
ご教授いただきたいのは、検索結果のテンプレートの振り分け処理の箇所との認識です。
(検索結果ページの中身の作成についてお伺いしているわけではありません。)WordPressデフォルトの検索機能の検索結果にて既にsearch.phpを使用してしまっている状態で、VK Filter Search Proを導入した場合、デフォルトの検索機能とは異なる体裁の検索結果ページを作成する場合の手段について教えていただきたいです。
(もしVK Filter Search Proでsearch.phpを使わざるをえない場合は、デフォルトの検索機能の検索結果にて別テンプレートを用意する方法でも構いません)恐れ入りますが宜しくお願いいたします。
2022年1月14日 11:22 AM #60448ブロックで配置した VK Filter Search Pro の検索フォームで「検索結果にフォームを表示する」をonにして、下記の条件分岐でできると思います。
if ( isset( $_GET['vkfs_form_id'] ) ){ // Filter Search の検索結果 } else { // 通常の検索結果 }
検索結果ページにフォームを表示したくない場合はCSSで非表示にする形で対応いただければと思います。
一度お試しください。- この返信は2年、 9ヶ月前にDRILL LANCERが編集しました。
Attachments:
You must be logged in to view attached files.2022年1月14日 3:11 PM #60480補足 :
通常の検索結果と filter search の検索結果のファイルを分けたい場合は
searchresult-filter.php
searchresult-normalを作った上で、search.php 内で、条件分岐を使って
if ( isset( $_GET['vkfs_form_id'] ) ){ // Filter Search の検索結果用ファイルの読み込み get_template_part('searchresult-filter'); } else { // 通常の検索結果用ファイルの読み込み get_template_part('searchresult-normal'); }
のような形で読み込めば良いと思います。
2022年1月17日 9:55 AM #60562
I.H.参加者ご丁寧にご教授いただきありがとうございます。
上記の対応で無事実装できました。なお追加での質問で恐縮ですが、「検索結果にフォームを表示する」をonにした場合、検索結果ページに検索フォームが表示されるかと思いますが、自作の検索結果ページに表示させるにはどのような処理の記述が必要でしょうか。
恐れ入りますが上記につきましてもご教授願います。
- この返信は2年、 8ヶ月前にI.H.が編集しました。
2022年1月17日 11:21 AM #60573おや?
検索結果の表示ループで 親テーマがベクトル以外のテーマならループ部分でwhile ( have_posts() ) { the_post();
が書いてあれば表示されるはずですが表示されませんか?
2022年1月17日 12:02 PM #60574
I.H.参加者早々にご教授いただきありがとうございます。
以下が実装中のコードです。
確認したところ、ご指摘の記述は記述済みかと思われますが検索結果ページに検索フォームは表示されません。
お手数ですが下記のコードをご確認いただき再度ご教授いただけますと幸いです。宜しくお願いいたします。
<?php if (isset( $_GET['vkfs_form_id'])): ?> // Filter Search の検索結果 <?php query_posts($query_string . '&cat=4'); ?> <div class="searchHeader" style="margin-bottom: 20px;">Search results : <?php echo $wp_query->found_posts; ?> case</div> <div class="StoriesWrap"> <ul class="article_list"> <?php if(have_posts()): ?> <?php while(have_posts()): the_post(); ?> <li> <div class="tab_content_description" style="margin-bottom: 30px;"> <div class="newsArticleLeft"> <a>"><?php echo get_the_post_thumbnail('', 'thumbnail', ''); ?></a> </div> <div class="newsArticleRight"> <div class="StoriesDate"><?php echo get_the_date('Y.m'); ?></div> <div class="StoriesTitle"><a>"><?php the_title(); ?></a></div> <div class="StoriesTitle2"><?php echo get_field('aslead'); ?><a>"><strong><i>Read More</i></strong></a></div> </div> </div> <hr style="border:0.75px solid #CCC; margin: 0 auto 30px;"> </li> <?php endwhile; ?> <?php elseif(empty(get_search_query())) : ?> // 通常の検索結果 echo '<p>The search keyword has not been entered.</p>'; <?php else : ?> <div class="searchNoneText">There were no articles that hit the search criteria.</div> <?php endif; ?> <?php $args = array( 'mid_size' => 1, 'prev_text' => '<<Back', 'next_text' => 'Next>>', 'screen_reader_text' => ' ', ); the_posts_pagination($args); ?> </ul> </div> <?php else: ?>
- この返信は2年、 8ヶ月前に石川@Vektor,Inc.が編集しました。
2022年1月17日 5:35 PM #60593<?php query_posts($query_string . '&cat=4'); ?>
削除したら普通に表示されますか?2022年1月18日 9:07 AM #60622
I.H.参加者ご教授いただきありがとうございます。
上記の箇所を削除したところ、検索結果ページに検索フォームが
表示されるようになりました。
ありがとうございます。しかし、<?php query_posts($query_string . ‘&cat=4’); ?>の記述は、VK Filter Search Proにて特定カテゴリーの結果のみを表示させる為に設定しておりました。
よって、別途、特定カテゴリーのみを検索結果ページに表示させる、または検索時に特定カテゴリーのみを検索させる方法についてご教授いただけませんでしょうか。何度もお伺いし大変恐縮ではございますが
何卒宜しくお願い申し上げます。- この返信は2年、 8ヶ月前にI.H.が編集しました。
2022年1月18日 12:46 PM #60634
I.H.参加者上記に追記します。
上記の通り、<?php query_posts($query_string . ‘&cat=4’); ?>の記述を外し、VK Filter Search Proにて特定カテゴリーの結果のみを表示させる場合、別途、特定カテゴリーのみを検索結果ページに表示させる方法か、または検索時に特定カテゴリーのみを検索させる方法についてのご教授をお願いいたしましたが、
もしくは、<?php query_posts($query_string . ‘&cat=4’); ?>の記述を残したままの状態での、検索結果ページへの検索フォームの表示方法がありましたら、こちらの方法も含め、いずれかの方法をご教授いただけますと幸いです。何卒重ねてお願い申し上げます。
2022年1月19日 10:12 AM #60722query_posts() は非推奨です。pre_get_posts を使いましょう。
functions.phpに以下のように書いてください。add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' ); function foo_modify_query_exclude_category( $query ) { if ( ! is_admin() && $query->is_main_query() && is_search() && isset( $_GET['vkfs_form_id']) ) $query->set( 'cat', '4' ); }
https://gatespace.jp/2012/09/10/modify_main_queries/
2022年1月19日 5:12 PM #60767
I.H.参加者たびたびのご教授誠に感謝いたします。
上記対応で、VK Filter Search Proにて特定カテゴリーのみの検索が出来き
かつ検索結果画面に検索フォームが表示されるようになりました。またquery_posts()の件もありがとうございます。
非推奨とのことで承知いたしました。なお、何度もお伺いし大変申し訳ありませんが、
検索結果に検索フォームが表示されるようになったのですが、
検索結果が該当無しの場合には検索フォームが表示されません。先の質問の際に記載いたしましたsearch.phpを編集し
いかつか試してみましたが上手くいきません。大変恐れ入いりますが、検索結果が該当無しの場合の検索フォームの
表示方法についてご教授いただきますようお願いいたします。何卒宜しくお願い申しげます。
2022年1月20日 1:48 PM #60864functions.phpなどに
add_filter( 'vkfs_theme_hook_array', function($theme_hook_array){ $theme_hooks[] = '自分のテーマのディレクトリ名(例:my-theme)'; $theme_hook_array = array_merge( $theme_hook_array, $theme_hooks ); return $theme_hook_array; });
search.php で検索結果を表示させたい芭蕉に
<?php do_action( 'display_form_on_loop' );?>
でいけると思います。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。