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

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

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

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

PHP

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

Q&A

解決済

3回答

2156閲覧

wordpressのオリジナルテーマを作成中。index.phpの表示がsingle.phpとpage.phpとは異なることについて

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/02/01 22:55

###前提・実現したいこと
wordpressのオリジナルテーマのindex.phpと他のsingle.phpとpage.phpで見た目が変化しないようにしたい

###発生している問題・エラーメッセージ
ローカル環境(XAMPP)でwordpressのオリジナルテーマを作成中。まず、htmlファイルを作り、それをindex.phpに変換し、ループなどテーマに必要なタグを挿入しました。

このindex.phpをpage.php、single.phpに複製し、ブラウザで表示したところindex.phpだけ表示位置が右に15px程度ずれます。

エラーメッセージ エラーメッセージは表示されません。

###該当のソースコード

WodpressとPHP

1 2【index.phpの記述内容】 3<?php get_header(); ?> 4<div class="row rowV"> 5 <!-- メインカラム --> 6 <div class="colSm70"> 7 <div class="container"> 8 <section> 9 <?php if (have_posts() ) : while (have_posts() ) : the_post(); ?> 10 <div class="post"> 11 <div class="post-header"> 12 <h2> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </h2> 13 <div class="post-meta"> 14 <?php echo get_the_date(); ?>【<?php the_category(', ') ?>】 15 </div> 16 </div> 17 <div class="post-content"> 18 <div class="post-body"> 19 <?php the_excerpt(); ?> 20 </div> 21 </div> 22 <?php endwhile; else: ?> 23 <p>記事はありません</p> 24 <?php endif; ?> 25 </div> 26 </section> 27 <nav> 28 <div class="prenex"> 29 <div class="prev"><?php previous_posts_link(); ?></div> 30 <div class="next"><?php next_posts_link(); ?></div> 31 </div> 32 </nav> 33 </div> 34 </div> 35 <?php get_sidebar(); ?> 36</div> 37<?php get_footer(); ?> 38【CSS側の記述】 39html { 40 /* ベースとなるフォントの設定計算しやすいように10pxにする */ 41font-size: 62.5%; 42/*max-width: 1170px !important;*/ 43margin: 0 auto !important; 44padding: 0 !important; 45} 46/* 10px=1.0rem 古いブラウザ対応のためpx単位も併記 */ 47body{ 48 font-size: 16px; 49 font-size: 1.6rem; 50 font-family: 'Hiragino Sans','ヒラギノ角ゴシック','Hiragino Kaku Gothic Pro','ヒラギノ角ゴ Pro W3','メイリオ','Meiryo','MS Pゴシック',Osaka,Verdana,sans-serif; 51 color: #333; 52 -webkit-text-size-adjust: 100%; 53 font-feature-settings : "palt" 1; 54 background-color: lime; 55} 56/* 共通設定 */ 57*, *:before, *:after { 58 -webkit-box-sizing: border-box; 59 -moz-box-sizing: border-box; 60 -o-box-sizing: border-box; 61 -ms-box-sizing: border-box; 62 box-sizing: border-box; 63} 64/* グローバルナビ設定 */ 65.menu{ 66 font-size: 14px; 67 font-size: 1.4rem; 68 margin: 0 0 30px 0; 69 padding: 0; 70 background-color: #f39800; 71 width: 100%; 72 max-width: 100%; 73} 74.menu > li{ 75 display: inline-block; 76 width: 19%; 77 text-align: center; 78 margin: 0; 79} 80.menu a { 81 color: #fff; 82 display: block; 83 padding: 10px 0; 84} 85.menu a:hover{ 86 background-color: #ffc35c; 87} 88/* 投稿設定 */ 89.post{ 90 margin-bottom: 30px; 91} 92.post-header{ 93 margin-bottom: 15px; 94} 95.post-header h2{ 96 font-size: 20px; 97 font-size: 2.0rem; 98 font-weight: bold; 99 padding: 0; 100} 101.post-meta{ 102 font-size: 12px; 103 font-size: 1.2rem; 104 padding: 7px 0; 105 color: #666; 106} 107.post-content{ 108} 109.post-body{ 110} 111/* prenex設定 */ 112.prenex{ 113 padding: 10px 0; 114 font-size: 12px; 115 font-size: 1.2rem; 116 margin-bottom: 15px; 117 text-align: right; 118 width: 100%; 119 max-width: 100%; 120} 121.prev, .next{ 122 display: inline-block; 123 width: 20%; 124} 125/* カラム共通設定 単純にするためにカラムは10で分ける */ 126.container{ 127 padding-right: 15px; 128 padding-left: 15px; 129 margin-left: auto; 130 margin-right: auto; 131} 132.row { 133 display: flex; 134 display: -webkit-flex; 135 /*margin: 0 -15px;*/ 136} 137.colXs100, .colXs70, .colXs30, .colSm70, .colSm30, .colLg70, .colLg30, .colXl70, .colXl30{ 138 padding-left: 15px; 139 padding-right: 15px; 140 position: relative; 141 min-height: 1px; 142} 143.colXs100{ 144 width: 100%; 145} 146.colXs70{ 147 width: 70%; 148} 149.colXs30{ 150 width: 30%; 151} 152/* レスポンシブのためのメディア設定 小さいものを基準に大きい時の設定を記述(モバイルファースト) */ 153/* Bootstrapのメディア設定と同じ */ 154/* smart phone */ 155@media screen and (max-width: 767px){ 156 .rowV{ /* スマホサイトではメインとサイドを縦積みにする */ 157 -webkit-flex-direction: column; /* Safari */ 158 flex-direction: column; 159 } 160}

###試したこと
課題に対してアプローチしたことを記載してください
index.phpの各パーツ、CSSのマージンやパディングをコメントアウトして挙動を確認しました。

post-bodyの部分をコメントアウトすると全体がずれることがなくなり、70%に設定している左カラムが一文字分程度広がるのみとなります。

複製したそのままのsingle.phpやpage.phpではこうしたことが起こらないのでループによって記事が3個読み込まれることによって全体がずれるといったことになっているのではないかと推測していますが、ずれる量が15px程度で、マージンの設定はループの外に出しているので原因はわからないままです。

試しにpost-bodyなどのループの中でマージン、パディングを設定したところ、やはり3回分、45px程度ずれます。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
Windows7、Xamppのローカル環境、エディタはAtomで制作中です。
修正点などご教示いただけましたら幸いです。
よろしくお願いします。

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

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

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

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

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

8-0_nyan5

2017/02/02 00:28

</section>前の</div>の位置が違うような気がします。違うかな?
退会済みユーザー

退会済みユーザー

2017/02/02 02:10 編集

ご連絡ありがとうございます。 確かに、不自然な感じがしたのでendwhileの前、endwhileとelseの間にそれぞれ入れて表示を試してみたところ、ページの開始位置は変わらず、70%のブロックの部分が一文字分程度index.phpを表示させると広がり、その分ページ全体が右に広がります。 また、containerクラスをrowの上に持って行ってcontainerとrowをsidebarを読み込んだ後に終了させ、投稿の概要を読み込んでいる部分(<div class="post-content">~)をコメントアウトするとこうした表示の問題はなくなります。なので、ループが原因では、と疑っているのですが解決に至らないのが現状です。
退会済みユーザー

退会済みユーザー

2017/02/02 08:23

Webブラウザの開発者ツール(デベロッパーツール)を使用して、どのスタイルが適用されているかを確認されてはいかがですか?
guest

回答3

0

表示されている```html

<div>~</div>```だけ見てみると、ループの中の数が違うので、 <section>の後に``` <div class="post">```を持って行くか、 ``` </section>```の前の```</div>```を```<?php endwhile; else: ?>```の前に持って行けばいいのではないでしょうか。

投稿2017/02/02 02:26

8-0_nyan5

総合スコア2352

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

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

退会済みユーザー

退会済みユーザー

2017/02/02 03:48

ご回答ありがとうございます。 確かに、ループの中の<div>の数が違いました。 お伝えいただいた両方を実施し、表示を確認したところ、ウェブサイトの表示位置、左側はずれないのですが、70%のボックスが一文字分程度(15px)程度広がる状態です。 不思議なのは</section>の前の<div>を<?php endwhile; else: ?>の前に持っていき、<div class="post">を<section>の後に入れる(間違った状態)にすると、index.phpだけがレイアウトが崩れるようになります。 設定で一覧表示する記事数を3にしているのですが、3番目の記事だけが1,2番目の記事の右側にきて、サイドバーはカラム落ちするようになります。 このことは今回のエラーと関係しているかはわかりませんが、複製したpage.phpとsingle.phpでは何も起こらず、index.phpだけが動きます。 ループの中の<div>の数を直して<div class="post-content>~</div>部分をコメントアウトすると表示の問題が改善されるので、今のところ現状に変化がない状態です。
8-0_nyan5

2017/02/02 04:00

いえ、違います。 移動させるのは、どちらか一方です。 デザイン的にどうするかこちらではわからないので、とりあえず、両方示しました。
退会済みユーザー

退会済みユーザー

2017/02/02 04:28

すみません、言葉が足りませんでした。ご提示いただいたどちらか一方を動かす方法を両方とも試しましたという意味です。 ループの中で<div></div>の対を作る、ということですよね。自分が最初に記載したものですと<div>または</div>が一つループの外に出ていました。 しかしながら現象は変わらず、<div class="post-content>~</div>部分をコメントアウトすると表示の問題が改善されるという状況にも変化は見られません。 先のコメントのように間違った状態を作るとindex.phpだけが異なる表示をするので、index.phpに特有(?)なのか、ループに原因があるのか今のところ原因がつかめないのが現状です。
8-0_nyan5

2017/02/02 05:00

失礼しました。 そうですか、それだとちょっとわかりません。
退会済みユーザー

退会済みユーザー

2017/02/03 19:58

ご回答ありがとうございました。おかげさまで解決することができました。
guest

0

ご提示いただいたスタイルシートの内容ですと、
記事のタイトルやコンテンツのテキスト量によって、
colSm70クラスのdivの横幅が可変になっているように見えます。

CSS

1.colSm70 { 2 width: 70%; 3}

などで幅を指定してみたらどうでしょうか?

投稿2017/02/02 09:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/02/02 10:17

ご回答ありがとうございます。 最初にご回答いただいた部分は既に修正済みの状態でデベロッパーツールで確認しました。 ※すみません記載ミスで、index.phpが広がるのではなく、「縮む」です。 bodyレベルで16px分、index.phpが縮みます。 その下ではbodyの幅が1060pxの時に70%の部分が732.594px、30%の部分が267.406px、パディングがそれぞれの部分で15px、70%と30%の間は30px空いている計算になります。単純に考えれば70%の部分は 1060-60*70%=700pxになっているはずなのですが… パディングやマージンの指定はcontainerとrowクラスのみです。ループの中ではそうした指定はありませんでした。 containerクラスにメディアに合わせた幅を設定しても現象は変わらず。 htmlにmax-widthで1170pxを指定しても現象は変化なし。 また、colSm70を最大幅の1170pxの70%、819pxでmax-widthを指定しても改善されません。 ただ、colSm70のmax-widthをこのクラスのメディア幅750pxの70%、537.6pxに指定すると状況は改善されます。 この辺りの設定はBootstrapを参考にしながらそれを単純にした形で設定していて、メディア設定はBootstrapのものをそのまま指定しています。 以前にはループの中にパディングやマージンの設定を入れてみたことがあるのですが、当然のことながらその設定が順々に重なって適用されました。 今の状態で、index.phpが縮むときはページタイトルは動かず、その下のナビゲーションの文字から動いています。 また、16pxは一文字分の大きさですので、その辺りに原因があるかもしれませんが、今のところindex.phpとsingle.php、page.phpは同一のコード(複製したまま)なので、おかしくなるなら全ておかしくなりそうなのですが、index.phpだけおかしくなっています。 また、body周りに8pxのマージンが設定されていましたが、それを消しても現象は変わりありません。 今のところ手の打ちようがない状態です。
退会済みユーザー

退会済みユーザー

2017/02/02 10:44

細かい数値の話はこの際置いておきましょう。 私が気になっているのは、ご呈示いただいたCSSでは、divの幅指定が一切おこなわれていないことです。 以下の記述を加えても状況は改善しませんか? .colSm70 { min-width: 70%; }
退会済みユーザー

退会済みユーザー

2017/02/03 19:28

ソースの抜き出し方が悪かったですね、すみません。 現状、Bootstrapと同じメディア設定を行っています。 つまり、タブレットの設定: @media only screen and (min-width: 768px){}と、通常のPC設定: @media only screen and (min-width: 992px){}、もっと幅の広いディスプレイ用の設定: @media only screen and (min-width: 1200px){}を設定しています。 タブレット以下のカラム幅の設定をcolXs○○%としています。 タブレット以上の場合の設定はそのタブレット幅のメディア設定の中にcolSm○○%としています。 ですので、colSm○○%という場合は@media only screen and (min-width: 768px)の中に書くのでその幅が適用されることになります。 例えばタブレット以下の幅では横幅100%、タブレット以上は70%と30%の横並びといった場合は <div class="container"><div class="row rowV"> <div class="colSm70">foo</div> <div class="colSm30">bar</div> </div></div> ※rowVはそれぞれのブロックを縦積みにするための設定 となります。 お二人のご回答によって問題点が絞り込めたおかげで自己解決できました。 自己解決内容も記載しますのでご確認ください。 ありがとうございました。
guest

0

ベストアンサー

8-0_nyan5さん、mizさんご回答ありがとうございました。
おかげさまで解決できました。

原因は改行コードにあったようです。

グローバルナビの個々のliの幅がbox-sizing: border-boxを設定しているので計算上20%になるはずなのですが、20%に設定するとカラム落ちをするので19%に設定していました。
これがなぜかと調べていたらdisplay:inline-blockを設定した場合改行コードの幅分横幅が広くなるので、<ul></ul>を改行無しで書かなくてはなりませんでした。

wordpressの場合はメニューは管理画面で設定するので改行無しで記述はできないので ulでfont-sizeを0にして、liで元のフォントサイズに戻すと改行コードの問題はクリアできます。
グローバルナビもこの設定を行ったところliの幅を20%にしてもカラム落ちしなくなりました。

これと同じことが言えるのでは??と思ったので、post-headerとpost-contentクラスのフォントサイズを0にして、中にあるh2、post-meta、post-bodyクラスでフォントサイズを設定し直したところ、70%側の幅が伸縮することがなくなり、正常になりました。

幅の狭いメディアでは縦スクロールバーが出るとその幅分だけ縮むのですが、縦スクロールバーを消すわけにもいかないのでやむを得ないでしょう。
縦スクロールバーの影響が出ない幅までディスプレイを広げた時は投稿ページや固定ページに遷移しても全体の幅に影響が出ませんでした。

ulとliの改行コードの問題がそのまま当てはまるかはわからないのですが、投稿ページや固定ページでは記事が一つだけ読み込まれるのでそうした幅に影響する何らかのコードが読み込まれても全体の幅に影響が出ず、ループによってそのコードが複数読み込まれることで全体の幅にまで影響した、ということのようです。

お二人のご回答で問題の原因を追究する手がかりを絞り込むことができました。
ありがとうございました。

投稿2017/02/03 19:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問