Serch&Filter proのプラグインを使おうとしているのですが、
検索結果の表示に使うものを「投稿タイプアーカイブ」を使いたいのです。
なぜなら、カスタム投稿タイプでbukkenというものを作っており、
archive-bukken.phpを作っているのですが、
そのarchive-bukken.phpの中に記述する検索結果の一覧を表示させるループの記述方法がわかりません!!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
WordPressのアーカイブテンプレートファイルのループの記述の仕方はわかるのでしょうか?

回答1件
0
ベストアンサー
絞り込み検索プラグインSearch&Fillter Pro使い方|表示設定編 | のまろぐ2.0
によると、
デフォルトでは、Search&Filterは現在のテーマフォルダから
index.php
またはsearch.php
を使用して結果を表示しようとします。
独自のテンプレートファイルを使いたい場合にはどうするかは、上記のサイトを見てもらえれば書いてあると思いますのでどうぞ。
投稿2019/07/31 09:52
総合スコア797
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
ご回答ありがとうございます。
教えていただいたページは既に何度も見ています。
しかしながら、なかなかわからずにおります。
まずはデフォルトテーマの「子テーマ」を作り、カスタム投稿委タイプを作成した後で、このプラグインの使い方を学んだ方が良い気がします。
デフォルトテーマには、search.phpがあると思うので、それをsearch-filter.phpにリネームして子テーマフォルダに保存し、あとは、参考サイトの「カスタムテンプレートを作成」を参考に設定してみてください。
Display results で using a Shortcode を選択し、検索結果表示用のショートコード
[searchandfilter id="50" show="results"]を新しく固定ページに検索結果というのを作り、
そこにショートコードを記載すれば、ちゃんと検索結果が出るようにはなりました。
ただ、ショートコードででる検索結果一覧は、タイトルリンクだけだったので、
wp-content\plugins\search-filter\templates\results.phpの中身を修正してやれば、
写真でも何でも表示できました。
ただし、英語のサポートページには、
results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、
その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。
しかし、私はプラグインの中のフォルダを、
オリジナルテーマの中にフォルダを作ってコピペしてそれを編集して上書きする方法をやったことがないので、よくわかりませんです。
>しかし、私はプラグインの中のフォルダを、
>オリジナルテーマの中にフォルダを作ってコピペしてそれを編集して上書きする方法をやったことがないので、よくわかりませんです。
なるほど!
たぶん、書いてある通りにテーマの中にフォルダ作ってファイル入れて好きなようにいじれば、プラグインが自動的にそのファイルを見つけて利用してくれるんだと思います。
そのままサイトにアップしてみたらどうなりますか?
ご回答ありがとうございます。
デフォルトテーマの子テーマとの事なのですが、
私はいつも、ゼロからオリジナルテーマを作っております。
search.phpはございます。
search-filter.phpにすればいいとの事でしたでしょうか?
search.phpは、いつもは普通の投稿やCPTUIなどで作ったカスタム投稿タイプの検索結果を表示させるために使っております。
それとは、別にbukkenの検索結果を表示させたいと考えております。
それって考え方がちがうのでしょうか?
いろいろすみません!
>たぶん、書いてある通りにテーマの中にフォルダ作ってファイル入れて好きなようにいじれば、プラグインが自動的にそのファイルを見つけて利用してくれるんだと思います。
>そのままサイトにアップしてみたらどうなりますか?
そのようにしてみたのですが、
それでは何もかわりませんでした。
なので、プラグインのコアファイルをいじったら思うように表示する項目を増やせました。
でもそれじゃちがうような気がします。。
> 英語のサポートページには、
> results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、
> その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。
基本はこれでいいとして、多分このプラグインは、search.phpのメインループで使われるメインクエリを、プラグイン内で設定したフィルターつかって上書きして、結果表示させるプラグインなんだと思います。
なので、search.phpがあったら(もしその中で $hogehoge = new WP_Query()とかサブクエリを使って表示させていなければ)、プラグインで設定した内容の結果が表示されるはずです。
【はず】と書いたのは、メインループを使っていたとしても、そこでどうメインクエリを上書きしてるかによっては、プラグインによる上書きにさらにに上書きしている可能性があるからです。
> 英語のサポートページには、
> results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、
> その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。
今日帰宅する途中でこれを読んでみるので、この部分が書いてあるサポートページのURL教えてくださーい!
> なので、プラグインのコアファイルをいじったら思うように表示する項目を増やせました。
> でもそれじゃちがうような気がします。。
ですよね。。とりあえずは良いとしても、アップデートしたら上書きされちゃいますもんね。
search.phpはこんな感じにしております。。。汗;
<?php get_header(); ?>
<!-- main -->
<div id="main02">
<div id="somepage">
<div id="Maincontent">
<h2 class="pageH2">検索キーワード:「<?php the_search_query(); ?>」</h2>
<!-- 検索結果ループ部分 -->
<div class="search_results">
<?php if(have_posts()): ?>
<!-- 検索ワードを出力 -->
<?php query_posts($query_string.'&posts_per_page=20'); ?><!-- 検索結果の表示数を指定 -->
<ul>
<?php while(have_posts()): the_post(); ?>
<li>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<div class="pagemiru"><a href="<?php the_permalink(); ?>">ページを見る</a></div>
</li>
<?php endwhile; ?>
</ul>
<!-- 検索ワードに該当する記事がない場合の処理-->
<?php else: ?>
<!-- 検索ワードを出力-->
<h2>「<span><?php the_search_query(); ?></span>」の検索結果が見つかりませんでした。</h2>
<?php endif; ?>
</div>
<!-- 検索結果ループ部分 -->
<!--ページネーション-->
<?php if (function_exists('responsive_pagination')) {
responsive_pagination($additional_loop->max_num_pages);
} ?>
<!-- ページネーションパーツ -->
</div><!-- Maincontent -->
<aside>
<?php get_sidebar(''); ?>
</aside>
</div><!--- somepage -->
</div><!-- main02-->
<?php get_footer(); ?>
>今日帰宅する途中でこれを読んでみるので、この部分が書いてあるサポートページのURL教えてくださーい!
サポートページのURLは以下になります。
↓
https://searchandfilter.com/documentation/search-results/using-a-shortcode/
※Customising the Resultsの部分になるかと思います。
URLありがとうございまーす。
それとは別に、search.phpの書き方を読むと、メインクエリとかサブクエリとかあまり理解されていないようなので、
https://hijiriworld.com/web/wp-essence/
http://www.webdesignleaves.com/pr/wp/wp_loops.html
の二つをチラチラと読んでみると、search.phpの書き方だと良くないというのが分かると思います。
大事なのは、
・WordPressはURLにアクセスがあると、URLから何が求められているのかを自動的に判断してデータを取ってきてくれます。(この自動的に集められたデータとデータベースにデータを求める文章を「メインクエリ」って呼びます)
・さらにURLから「どのテンプレートが求められているのか」を自動的に判断して、そのテンプレートにメインクエリのデータを渡します。
・そのテンプレートは、メインクエリにデータがあるのかをif(have_posts())で判定し、データがあるならwhile(have_posts())で一つずつデータを取り出して表示させます。
という3ステップがあるんですよね。
query_posts()は、このメインクエリを書き換える関数なのだけど、if(have_posts())の次にあるって事は、「メインクエリのデータが出そろってデータがあったらメインクエリを書き換えてもう一度データを作り直させますよ」って事になって、なんだか違和感ありますよね。
シンプルなのは、「メインクエリのデータが届いたけど、ちょっとメインクエリの中身を書き直したからもう一度データ集めてきて!そして書き直したメインクエリにデータがあったら」なはずです。なので、query_posts()はif( have_posts() )の前にあるべき。
更に言うと、query_postsは最後(endwhile; endif;の後)に、wp_reset_query()を入れて、無理やり変えたメインクエリの中身をリセットしてあげないと、その影響があとまで残るといういやらしい関数なんです。(なのでquery_postsでのメインクエリの書き換えは推奨されていません)
長々と書きましたが、上記2つのサイトをチラチラと読んでみて、なんとなくWordPressのメインクエリについて心にとどめておいでください。
とても大切なものをありがとうございます。
基本の基本をはっきりとわからないまま、もやもやしたものがあるまま、テーマを作るときに、いろいろ場当たり的に作ってきていました。
それで、なんとか自分の思うことが徐々に出来ていたので、よしとしていましたが、、
なんだか、wordpressでサイトを作っていても見えていない部分、よくわからない部分が多くて不安もありました。
2つのリンクをゆっくり読んでみたいと思います。
プラグインのファイルの上書きについて、何かわかりましたらご教授いただけますと幸いでございます。m(_ _)m
正直、ループを書くときに、query_posts()だったり、WP_Queryだったり、よく違いがわかってはいません。なんとなくその時々で調べたので、動くからまあいいかと思っていたり、
その後に、WP_Queryの方がいいというのを見て、WP_Queryにしてみたりという感じです。
そして、search.phpはだいぶ前に作っていたのを今もそのまま流用しているので、
query_posts()なんだと思います。
が、query_posts()の正確な記述もはっきりとはわからないまま、
動いているからいいか、、ってな感じでした。お恥ずかしい限りです。。
ちなみにsearch.phpのループ部分は以下のようで大丈夫でしたでしょうか?
<?php query_posts($query_string.'&posts_per_page=20'); ?><!-- 検索結果の表示数を指定 -->
<!-- 検索結果ループ部分 -->
<div class="search_results">
<?php if(have_posts()): ?>
<!-- 検索ワードを出力 -->
<ul>
<?php while(have_posts()): the_post(); ?>
<li>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<div class="pagemiru"><a href="<?php the_permalink(); ?>">ページを見る</a></div>
</li>
<?php endwhile; ?>
</ul>
<!-- 検索ワードに該当する記事がない場合の処理-->
<?php else: ?>
<!-- 検索ワードを出力-->
<h2>「<span><?php the_search_query(); ?></span>」の検索結果が見つかりませんでした。</h2>
<?php endif;wp_reset_query(); ?>
</div>
<!-- 検索結果ループ部分 -->
昨日公式のドキュメントを読んだのですが、
> 英語のサポートページには、
> results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、
> その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。
ショートコードを使うなら、プラグイン内にあるresults.phpファイルを自分のテーマ内のsearch-filterフォルダ内にコピーしてあげて、後はコピーしたファイルを編集してサーバーにアップロードすればいいみたいですね。
上の方に
>それでは何もかわりませんでした。
とありますが、これは自分のテーマフォルダにコピーしたresults.phpではなくてプラグイン内のresults.phpが使われてしまうと言うことでしょうか?
ご回答ありがとうございます。
すみません!!m(_ _)mm(_ _)mm(_ _)m
今、サーバー側のsearch-filterフォルダを再度念のため見てみたら、コピペして編集したresults.phpがアップされていませんでした!!
フォルダに入れてフォルダごとアップしたつもりでしたが、アップできていなかったようです。
私の確認漏れでした、申し訳ございません!!
編集したresults.phpをテーマ内のsearch-filterフォルダにアップしたら、ACFで設定したフィールドに登録した写真なども、ちゃんと表示できるようになりました!!
本当にありがとうございました!!
お~~!
良かったですね。
こちらもプラグインの使い方を知ることができてよかったです。
こちらこそ、本当にありがとうございました!!!(^▽^)

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。