質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

4345閲覧

Serch&Filter proで投稿タイプアーカイブのループの記述方法がわからない。

hirohiro121212

総合スコア15

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2019/07/31 07:12

Serch&Filter proのプラグインを使おうとしているのですが、

検索結果の表示に使うものを「投稿タイプアーカイブ」を使いたいのです。

なぜなら、カスタム投稿タイプでbukkenというものを作っており、
archive-bukken.phpを作っているのですが、

そのarchive-bukken.phpの中に記述する検索結果の一覧を表示させるループの記述方法がわかりません!!

イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yukikp

2019/07/31 09:44

WordPressのアーカイブテンプレートファイルのループの記述の仕方はわかるのでしょうか?
guest

回答1

0

ベストアンサー

絞り込み検索プラグインSearch&Fillter Pro使い方|表示設定編 | のまろぐ2.0

によると、

デフォルトでは、Search&Filterは現在のテーマフォルダから index.phpまたは search.phpを使用して結果を表示しようとします。

独自のテンプレートファイルを使いたい場合にはどうするかは、上記のサイトを見てもらえれば書いてあると思いますのでどうぞ。

投稿2019/07/31 09:52

yukikp

総合スコア797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hirohiro121212

2019/07/31 11:45

ご回答ありがとうございます。 教えていただいたページは既に何度も見ています。 しかしながら、なかなかわからずにおります。
yukikp

2019/07/31 11:50

まずはデフォルトテーマの「子テーマ」を作り、カスタム投稿委タイプを作成した後で、このプラグインの使い方を学んだ方が良い気がします。 デフォルトテーマには、search.phpがあると思うので、それをsearch-filter.phpにリネームして子テーマフォルダに保存し、あとは、参考サイトの「カスタムテンプレートを作成」を参考に設定してみてください。
hirohiro121212

2019/07/31 11:54

Display results で using a Shortcode を選択し、検索結果表示用のショートコード [searchandfilter id="50" show="results"]を新しく固定ページに検索結果というのを作り、 そこにショートコードを記載すれば、ちゃんと検索結果が出るようにはなりました。 ただ、ショートコードででる検索結果一覧は、タイトルリンクだけだったので、 wp-content\plugins\search-filter\templates\results.phpの中身を修正してやれば、 写真でも何でも表示できました。 ただし、英語のサポートページには、 results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、 その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。 しかし、私はプラグインの中のフォルダを、 オリジナルテーマの中にフォルダを作ってコピペしてそれを編集して上書きする方法をやったことがないので、よくわかりませんです。
yukikp

2019/07/31 11:58

>しかし、私はプラグインの中のフォルダを、 >オリジナルテーマの中にフォルダを作ってコピペしてそれを編集して上書きする方法をやったことがないので、よくわかりませんです。 なるほど! たぶん、書いてある通りにテーマの中にフォルダ作ってファイル入れて好きなようにいじれば、プラグインが自動的にそのファイルを見つけて利用してくれるんだと思います。 そのままサイトにアップしてみたらどうなりますか?
hirohiro121212

2019/07/31 11:59

ご回答ありがとうございます。 デフォルトテーマの子テーマとの事なのですが、 私はいつも、ゼロからオリジナルテーマを作っております。 search.phpはございます。 search-filter.phpにすればいいとの事でしたでしょうか? search.phpは、いつもは普通の投稿やCPTUIなどで作ったカスタム投稿タイプの検索結果を表示させるために使っております。 それとは、別にbukkenの検索結果を表示させたいと考えております。 それって考え方がちがうのでしょうか? いろいろすみません!
hirohiro121212

2019/07/31 12:01 編集

>たぶん、書いてある通りにテーマの中にフォルダ作ってファイル入れて好きなようにいじれば、プラグインが自動的にそのファイルを見つけて利用してくれるんだと思います。 >そのままサイトにアップしてみたらどうなりますか? そのようにしてみたのですが、 それでは何もかわりませんでした。 なので、プラグインのコアファイルをいじったら思うように表示する項目を増やせました。 でもそれじゃちがうような気がします。。
yukikp

2019/07/31 12:05

> 英語のサポートページには、 > results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、 > その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。 基本はこれでいいとして、多分このプラグインは、search.phpのメインループで使われるメインクエリを、プラグイン内で設定したフィルターつかって上書きして、結果表示させるプラグインなんだと思います。 なので、search.phpがあったら(もしその中で $hogehoge = new WP_Query()とかサブクエリを使って表示させていなければ)、プラグインで設定した内容の結果が表示されるはずです。 【はず】と書いたのは、メインループを使っていたとしても、そこでどうメインクエリを上書きしてるかによっては、プラグインによる上書きにさらにに上書きしている可能性があるからです。
yukikp

2019/07/31 12:08

> 英語のサポートページには、 > results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、 > その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。 今日帰宅する途中でこれを読んでみるので、この部分が書いてあるサポートページのURL教えてくださーい! > なので、プラグインのコアファイルをいじったら思うように表示する項目を増やせました。 > でもそれじゃちがうような気がします。。 ですよね。。とりあえずは良いとしても、アップデートしたら上書きされちゃいますもんね。
hirohiro121212

2019/07/31 12:11

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(); ?>
yukikp

2019/07/31 12:29

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のメインクエリについて心にとどめておいでください。
hirohiro121212

2019/07/31 13:17 編集

とても大切なものをありがとうございます。 基本の基本をはっきりとわからないまま、もやもやしたものがあるまま、テーマを作るときに、いろいろ場当たり的に作ってきていました。 それで、なんとか自分の思うことが徐々に出来ていたので、よしとしていましたが、、 なんだか、wordpressでサイトを作っていても見えていない部分、よくわからない部分が多くて不安もありました。 2つのリンクをゆっくり読んでみたいと思います。 プラグインのファイルの上書きについて、何かわかりましたらご教授いただけますと幸いでございます。m(_ _)m
hirohiro121212

2019/07/31 13:38 編集

正直、ループを書くときに、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> <!-- 検索結果ループ部分 -->
yukikp

2019/07/31 22:30

昨日公式のドキュメントを読んだのですが、 > 英語のサポートページには、 > results.phpをオリジナルのテーマ内にsearch-filterというフォルダを作って、 > その中に、results.phpをペーストしてそれを編集して、上書きするような内容が書いているように見えます。 ショートコードを使うなら、プラグイン内にあるresults.phpファイルを自分のテーマ内のsearch-filterフォルダ内にコピーしてあげて、後はコピーしたファイルを編集してサーバーにアップロードすればいいみたいですね。
yukikp

2019/07/31 22:34

上の方に >それでは何もかわりませんでした。 とありますが、これは自分のテーマフォルダにコピーしたresults.phpではなくてプラグイン内のresults.phpが使われてしまうと言うことでしょうか?
hirohiro121212

2019/08/01 01:02 編集

ご回答ありがとうございます。 すみません!!m(_ _)mm(_ _)mm(_ _)m 今、サーバー側のsearch-filterフォルダを再度念のため見てみたら、コピペして編集したresults.phpがアップされていませんでした!! フォルダに入れてフォルダごとアップしたつもりでしたが、アップできていなかったようです。 私の確認漏れでした、申し訳ございません!! 編集したresults.phpをテーマ内のsearch-filterフォルダにアップしたら、ACFで設定したフィールドに登録した写真なども、ちゃんと表示できるようになりました!!  本当にありがとうございました!!
yukikp

2019/08/01 00:06

お~~! 良かったですね。 こちらもプラグインの使い方を知ることができてよかったです。
hirohiro121212

2019/08/01 01:01

こちらこそ、本当にありがとうございました!!!(^▽^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問