-
投稿者投稿
-
2018年10月6日 11:54 PM #6200
たびたびの質問で申し訳ございません。
サイトで複数の絞り検索ができるfe-advanced-searchというプラグインを使用し、1つのカスタム投稿タイプの検索のみに使用しています。
その検索結果を、通常の検索とは違う内容にしたいため、専用のテンプレートに返したいのですが、プラグインのマニュアルでは、以下の説明があります。
▼以下———————————————————————-
search.phpの中身を下記のように記述し【分岐専用】のファイルとします。それぞれの検索結果用のテンプレートを別途用意して読み込みます。各テンプレートの内容は通常のsearch.phpに準じた内容を記述してください。
<?php
if( $_GET[‘fe_form_no’] == ‘0’) // フォームID=0の場合
get_template_part( ‘search’, ‘form0’ ); // search-form0.php というテンプレートを読み込みます
else if( $_GET[‘fe_form_no’] == ‘1’) // フォームID=1の場合
get_template_part( ‘search’, ‘form1’ ); // search-form1.php というテンプレートを読み込みます
else
get_template_part( ‘archive’ ); // archive.php を読み込みます
?>
▲以上—————————————————–
テンプレートファイルは、view/archive.php当たりを使うのかなと思いますが、分岐の内容をどのファイルに、どのように入れたらよいか分かりません。
もし、それが可能でしたら教えていただけませんでしょうか。2018年10月9日 12:01 PM #6242いろいろやり方はあると思いますが、Snow Monkey のテンプレート階層の流儀に従うなら下記のような感じになると思います。
/子テーマ/search.php
layout( get_theme_mod( 'archive-page-layout' ) ); if ( have_posts() ) { if ( $_GET['fe_form_no'] == '0' ) { // /子テーマ/templates/view/search-form0.php をビューファイルとして読み込み get_template_part( 'search', 'form0' ); } else if( $_GET['fe_form_no'] == '1' ) { // /子テーマ/templates/view/search-form1.php をビューファイルとして読み込み get_template_part( 'search', 'form1' ); } else { // デフォルトのビューファイルを読み込み $controller->render( 'archive', 'search' ); } } else { $controller->render( 'no-match' ); }
♥ 0いいねをした人: 居ません2018年10月9日 4:02 PM #6262ありがとうございます。ただ、実際に検索してみると、通常検索、プラグイン検索ともにsearch.phpの生コードが表示されてしまいます。
/子テーマ/search.phpに、検索フォームが1つだけのため
} else if( $_GET[‘fe_form_no’] == ‘1’ ) {
get_template_part( ‘search’, ‘form1’ ); を除いた上記のコードを記述、/子テーマ/templates/view/search-form0.php を設置
(search-form0.phpはtemplates/view/archive.phpをコピーして名前変更)しました。
♥ 0いいねをした人: 居ません2018年10月10日 10:02 AM #6267あれなんであろう…
上記の
search.php
のコード、< ?php
となってしまっていましたが正しくは<?php
なのでそれかもしれません!変更してみてください!♥ 0いいねをした人: 居ません2018年10月10日 11:34 AM #6273※うまく送信できないので、一部記号を変えてあります。
<?phpに変更で、通常の検索フォームは読み込むようになりましたが、検索フォームプラグインを使った時は、何も表示されません。(子テーマのsearch.phpを外してやってみると、通常の検索結果画面が表示されます。)search-form0.phpは、とりあえずtemplates/view/archive.phpの内容をそのまま使っていますが、それでよいのでしょうか。
search.phpは前回送っていただいたものから以下を除いたものです。
} else if( $_GET[‘fe_form_no’] == ‘1’ ) {
// /子テーマ/templates/view/search-form1.php をビューファイルとして読み込み
get_template_part( ‘search’, ‘form1’ );♥ 0いいねをした人: 居ません2018年10月10日 12:18 PM #6275通常の検索フォームは読み込むようになりましたが、検索フォームプラグインを使った時は、何も表示されません
あ! 読み込み部分が間違っていたかもしれません。下記のコードに差し替えてみてください。
<?php $controller = new Mimizuku_Controller(); $controller->layout( get_theme_mod( 'archive-page-layout' ) ); if ( have_posts() ) { if ( $_GET['fe_form_no'] == '0' ) { // /子テーマ/templates/view/search-form0.php をビューファイルとして読み込み $controller->render( 'search-form0' ); } else { // デフォルトのビューファイルを読み込み $controller->render( 'archive', 'search' ); } } else { $controller->render( 'no-match' ); }
search-form0.phpは、とりあえずtemplates/view/archive.phpの内容をそのまま使っていますが、それでよいのでしょうか。
この分岐コードは「検索内容によってページのデザインを変える」ために読むテンプレートを切り替える、というものだと思いますので、ご希望のデザインなどに応じてカスタマイズが必要なのではないでしょうか?
♥ 0いいねをした人: 居ません2018年10月10日 2:39 PM #6282ありがとうございました。読み込みがうまくいきました!
この独自のテンプレートsearch-form0.phpだけでは、多分内容を変えられないので、テンプレート内<?php get_template_part( ‘template-parts/loop/entry-summary’, get_post_type() ); ?>に記載のある、entry-summary.phpに代わる別のテンプレートを作成して、内容やデザインをカスタマイズするという理解でよろしいでしょうか。
検索結果から、アイキャッチ画像や投稿日などを消したかったので、実際にentry-summary.phpを別のファイル名にして子テーマに置いて、該当部分(以下)を外してみたのですが、消えません。何か他のファイルが優先されているのでしょうか。
追加したテキストなどは読み込んでいるので、ファイルは読み込んでいると思います。
ファイル構造が十分に理解できておらず、質問が長くなってすみません。消したのは以下です。
<div class=”c-entry-summary__meta”>
<ul class=”c-meta”>
<li class=”c-meta__item c-meta__item–author”>
<?php echo get_avatar( $post->post_author ); ?><?php echo esc_html( get_the_author() ); ?><li class=”c-meta__item”>
<?php the_time( get_option( ‘date_format’ ) ); ?></div>
♥ 0いいねをした人: 居ません2018年10月10日 7:44 PM #6291すみません、単純なミスでした。アイキャッチ画像は違う部分でした。
希望の通りにできました。ありがとうございました。今回は、search.phpによる検索結果の別のテンプレートへの返しを教えていただき、templates/view/archive.phpを流用したファイルでカスタマイズしようとしましたが、詳細のhtml内容は、template-parts/loop/entry-summaryから読み込んでいるようなので、そのファイルを流用することになりそうです。ファイルを細分化しているのですね。勉強になりました。
♥ 0いいねをした人: 居ません2018年10月11日 9:16 AM #6309なるほどです。
entry-summary については、
template-parts/loop/entry-summary-投稿タイプ.php
のファイルがあればそれを読み込み、なければフォールバックとしてtemplate-parts/loop/entry-summary.php
が読み込まれる、という仕組みになっています。なので、まずは子テーマに
template-parts/loop/entry-summary-投稿タイプ.php
をつくり、snow-monkey/template-parts/loop/entry-summary-post.php
の中身をコピペして必要に応じて改変する、という流れがやりやすいかもしれません。♥ 0いいねをした人: 居ません2018年10月11日 10:33 AM #6310ありがとうございました。
最初に作ったsearch-form0.phpと、template-parts/loop/entry-summary-投稿タイプ.php
の2つを改変することで、カスタマイズができそうです。
ファイル構造は最初戸惑いますが、流れが分かると使いやすいかもしれませんね。♥ 0いいねをした人: 居ません2018年10月12日 12:52 PM #6320ファイル構造は最初戸惑いますが、流れが分かると使いやすいかもしれませんね。
そうであると良いなと願っています…! 以前にどういう考えていまの構成にしているのか記事を書いたことがあるのでご参考まで。
ひとまず大丈夫そうということで、トピック閉じますね。
♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「検索結果を別のテンプレートファイルに返したい」には新しい返信をつけることはできません。