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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1296閲覧

WordPressでのsearch.phpテンプレートで表示が崩れてしまう

piyo-coder335

総合スコア7

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/03/21 02:45

WordPressでオリジナルテーマの作成中です。

WordPressのウィジェット機能で自作の検索フォームsearchform.phpを作成し、
検索結果をsearch.phpに表示させようとしています。

検索結果は、問題なく表示されるのですが、検索パターンによって表示が崩れてしまうことがあり
修正しようと試みましたがわからないことが多くなってきました。

search.phphome.phpをアレンジして編集しています。
適用させたいclass名もhome.phpのものを使いたいです。
home.phpでの表示は崩れていません)

今の所、home.phpは投稿一覧を表示させるようにしています。


search.php

<div class="myposthead"> <h1>検索結果</h1> <p>SEARCH</p> <?php if (have_posts()): ?> </div> <?php if (isset($_GET['s']) && empty($_GET['s'])) { echo '検索キーワードが未入力です'; } else { echo '“'.$_GET['s'] .'”の検索結果:'.$wp_query->found_posts .'件'; } ?> <div class="mypostlist"> <article <?php post_class(''); ?>> <?php while(have_posts()): the_post(); ?> <a href="<?php the_permalink(); ?>"> <?php if( has_post_thumbnail() ): ?> <figure> <?php the_post_thumbnail(); ?> </figure> <?php endif; ?> <h2><?php echo get_the_title(); ?></h2> </a> <?php endwhile; ?> <?php else: ?> <p>検索されたキーワードにマッチする記事はありませんでした</p> </article> <?php endif; ?> </div>

home.php

<div class="myposthead"> <h1>最新情報</h1> <p>RESENT</p> </div> <div class="mypostlist"> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <article <?php post_class(''); ?>> <a href="<?php the_permalink(); ?>"> <?php if( has_post_thumbnail() ): ?> <figure> <?php the_post_thumbnail(); ?> </figure> <?php endif; ?> <h2><?php the_title(); ?></h2> </a> </article> <?php endwhile; endif; ?> </div>

style.css

.mypostlist { display: flex; flex-wrap: wrap; justify-content: space-between; } .mypostlist article { width: 48%; margin-bottom: 20px; } .mypostlist figure { margin: 0; } .mypostlist h2, .mypostlist h3{ margin: 0; padding: 0; border: none; font-size: 0.8em; } .mypostlist img { height: 180px; object-fit: cover; }

具体的な事象は以下の通りです。

検索したワードに候補が見つかった時

「“●●”の検索結果:●件」の下に該当の記事とアイキャッチ画像とタイトルが表示されますが、
<div class="mypostlist">で指定したcssの一部が適用されません。
.mypostlistの内容全てと.mypostlist articlemargin-bottom: 20px;が適用されません)

検索したワードに候補が見つからなかった時

検索結果として、「検索されたキーワードにマッチする記事はありませんでした」と表示されますが、
sidebar.phpで表示させているウィジェットエリア内で、WordPressの管理画面で登録したプロフィール情報(本文のみ)が消えてしまいます。

ブランクで検索ボタンを押した時

「検索キーワード未入力」と表示されますが、その下に全ての投稿一覧が表示されます。
投稿だけではなく、現在使う予定のない固定ページのリンクも混じって表示されてしまいます。
検索ワードが未入力のまま検索ボタン押すと、search.phpがテンプレートとして使われずindex.phpを見に行くということらしいので、index.phpの内容も確認してみましたが、原因がわかりませんでした。


お手数をおかけいたしますが、上記の事象から考えられる原因、可能性等
わかる方どうかご教示いただけますでしょうか。

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

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

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

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

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

marlboro_tata

2020/03/21 05:08

検索ワードが未入力のまま検索ボタン押すと、WPのデフォルトの動きとしては、WPの投稿や固定ページ全ての記事が返ってくる、です。なので、投稿の一覧が表示されているように見えたり、固定ページへのリンクが混じっているのは仕様です、ということになるかと。。。
piyo-coder335

2020/03/21 08:14

ご教示ありがとうございます。 固定ページのリンクが表示されるのはwpのデフォルトだったんですね。。 調べてみたところ、`functions.php`に表示させたくない投稿IDを指定すれば除外できるらしいので 試しに以下のコードを入れてみたところ直りました! ``` function fb_search_filter($query) { if ( !$query -> is_admin && $query -> is_search) { $query -> set('post__not_in', array(394, 401,410) ); } return $query; } add_filter( 'pre_get_posts', 'fb_search_filter' ); ```
piyo-coder335

2020/03/21 08:15

ご教示ありがとうございます。 固定ページのリンクが表示されるのはwpのデフォルトだったんですね。。 調べてみたところ、`functions.php`に表示させたくない投稿IDを指定すれば除外できるらしいので 試しに以下のコードを入れてみたところ直りました! function fb_search_filter($query) { if ( !$query -> is_admin && $query -> is_search) { $query -> set('post__not_in', array(394, 401,410) ); } return $query; } add_filter( 'pre_get_posts', 'fb_search_filter' );
guest

回答1

0

ベストアンサー

PHP

1//search.php 2<div class="myposthead"> 3 <h1>検索結果</h1> 4 <p>SEARCH</p> 5</div> 6 7<div class="mypostlist"> 8 <?php if (have_posts()): ?> 9 10<?php 11if (isset($_GET['s']) && empty($_GET['s'])) { 12echo '検索キーワードが未入力です'; 13} else { 14echo '“'.$_GET['s'] .'”の検索結果:'.$wp_query->found_posts .'件'; 15} 16?> 17 18 19 <?php while(have_posts()): the_post(); ?> 20 <article <?php post_class(''); ?>> 21 <a href="<?php the_permalink(); ?>"> 22 23 <?php if( has_post_thumbnail() ): ?> 24 <figure> 25 <?php the_post_thumbnail(); ?> 26 </figure> 27 <?php endif; ?> 28 29 <h2><?php echo get_the_title(); ?></h2> 30 31 </a> 32 </article> 33 <?php endwhile; ?> 34 35 <?php else: ?> 36 <div class="no-result"> 37 <p>検索されたキーワードにマッチする記事はありませんでした</p> 38 </div> 39<?php endif; ?> 40</div>

直したのは、<?php if (have_posts()): ?>の開始位置、
<article <?php post_class(''); ?>>と閉じタグの</article> をwhileの内部へ。

おそらくこれで、レイアウト関係の崩れはなおると思います。

ブランクで検索ボタンを押した時

この時に思ったような表示結果にならないのは、またちょっと問題が別かな、と。

検索ワードが未入力のまま検索ボタン押すと、search.phpがテンプレートとして使われずindex.phpを見に行く

ということは、ないと思います・・・。クエリに/?s= が含まれているなら、何か特別なことをしない限りはsearch.php を参照すると思います。
実際にどのテンプレートを使っているかは、デバッグ系のプラグインで、表示しているページがどんなテンプレートファイルをつかっているかがわかるもの(Show Current Templateだったかな)があるので、入れて確かめてみると良いと思います。

投稿2020/03/21 04:53

編集2020/03/21 05:02
marlboro_tata

総合スコア525

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

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

piyo-coder335

2020/03/21 08:27 編集

回答ありがとうございます。 記載いただいたコードを元に修正したところレイアウトの崩れは直りました。 候補が見つからない時に、プロフィール情報が表示されない件は引き続き模索してみます。 (表示されなくても特に支障をきたさないので解決済みとします)
marlboro_tata

2020/03/21 08:30

検索結果0件の時だけ、特定のウィジェットが表示されない、という状況なのでしょうか? もしくは、サイドバー自体が表示されないのでしょうか? あと、もし、WPのデバッグモードをONにしていないようでしたら、ONにして、念のため、エラーなどが出ていないか確認すると良いと思います。 参考:http://wpdocs.osdn.jp/WordPressでのデバッグ
piyo-coder335

2020/03/21 12:42

はい、検索結果0件の時だけプロフィール情報の名前と紹介文が表示されない感じです。 ブラウザの検証で確かめてみましたが、ブランクになっていました。 デバックモードもonにしてみましたが、特にエラーらしきものは見つかりませんでした。
marlboro_tata

2020/03/22 00:09

エラーも出てないとなるとますます不思議現象ですね・・・。 ウィジェットが消えてしまう件についてはお役に立てないです。ごめんなさいー。
piyo-coder335

2020/03/22 01:52

いえいえ。 なんども回答くださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問