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

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

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

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

3回答

1154閲覧

【WordPress化】PHPのコードを当て込んでも元のHTMLと同じようなレスポンシブの動きにしたい

yusuke_2020

総合スコア3

WordPress

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

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2020/07/23 17:09

前提・実現したいこと

HTML/CSSで作ったサイトをWordPress化しようとしております。

元のサイトと同様、以下のようにレスポンシブで表示させたいのですが、PHPを触った経験値が浅く、解決策が思いつかないのでご教授頂きたく思います。

【やりたいこと】
~769px ⇒ 1列1記事、計3記事表示
769px~993px ⇒ 1列3記事、計3記事表示
993px~ ⇒ 1列5記事、計5記事表示

【現状】
~769px ⇒ 1列1記事、計5記事表示
769px~993px ⇒ 上の列に3記事&下2記事、計5記事表示
993px~ ⇒ 1列5記事、計5記事表示

WordPressの管理画面から5つ分投稿してから下記のようにwhile構文を使ってまとめた場合、993px未満になっても.only_pcのdisplay: none;が効かせられないので、5つ表示されたままになってしまいます。

なぜ表示されないのかはわかってはいるものの、管理画面から投稿できるようにして、かつ元のようにレスポンシブで表示できるいい方法が思いつかず、詰まっているという状況です。

該当のソースコード

「HTML」「CSS」が元のサイトの該当箇所、「PHP」が元のHTMLにPHPコードを当て込んだものです。

HTML

1 <div id="popular_wrapper"> 2 3 <h1><i class="fas fa-flag"></i> 人気のある記事</h1> 4 5 <div id="popular" class="row"> 6 <div class="article mb-3"> 7 <img class="img-fluid" src="images/MacBook-and-clutter.png" alt=""> 8 <p class="category">カテゴリー#1</p> 9 <p class="text">テスト投稿</p> 10 <p class="number number1">No.1</p> 11 </div> 12 <div class="article mb-3"> 13 <img class="img-fluid" src="images/macbook-holding.png" alt=""> 14 <p class="category">カテゴリー#1</p> 15 <p class="text">テスト投稿</p> 16 <p class="number number2">No.2</p> 17 </div> 18 <div class="article mb-3"> 19 <img class="img-fluid" src="images/communication.png" alt=""> 20 <p class="category">カテゴリー#4</p> 21 <p class="text">テスト投稿</p> 22 <p class="number number3">No.3</p> 23 </div> 24 <div class="article only_pc mb-3"> 25 <img class="img-fluid" src="images/macbook-at-the-coffee-shop.jpg" alt=""> 26 <p class="category">カテゴリー#2</p> 27 <p class="text">テスト投稿</p> 28 <p class="number number4">No.4</p> 29 </div> 30 <div class="article only_pc mb-3"> 31 <img class="img-fluid" src="images/rest-time-in-front-of-macbook.png" alt=""> 32 <p class="category">カテゴリー#3</p> 33 <p class="text">テスト投稿</p> 34 <p class="number number5">No.5</p> 35 </div> 36 </div> 37 38 </div>

CSS

1 2div#popular_wrapper h1, 3div#new_wrapper h1 { 4 font-size: 24px; 5 border-top: 1px solid #dcdddf; 6 border-bottom: 1px solid #dcdddf; 7 text-align: center; 8 padding: 24px 0; 9 margin-top: 50px; 10 margin-bottom: 30px; 11 width: 100%; 12} 13 14div#popular div.article, 15div#new div.article { 16 position: relative; 17 border: 1px solid #dcdddf; 18} 19 20div#popular div.article p.number, 21div#new div.article p.number { 22 position: absolute; 23 top: 0; 24 left: 0; 25 color: #fff; 26 font-size: 12px; 27 width: 48px; 28 height: 48px; 29 text-align: center; 30 opacity: 0.7; 31} 32 33div#popular div.article p.number { 34 line-height: 48px; 35} 36 37div#popular div.article p.number1 { 38 background-color: #d6b038; 39} 40 41div#popular div.article p.number2 { 42 background-color: #bfc4c9; 43} 44 45div#popular div.article p.number3 { 46 background-color: #b9704e; 47} 48 49div#popular div.article p.number4 { 50 background-color: #47442F; 51} 52 53div#popular div.article p.number5 { 54 background-color: #47442F; 55} 56 57div#new div.article p.number { 58 background-color: #3B4552; 59 padding-top: 3px; 60} 61 62div#new div.article p.number span { 63 font-size: 14px; 64} 65 66 67div#popular div.article p.category, 68div#new div.article p.category { 69 background-color: #47b39d; 70 color: #fff; 71 text-align: center; 72 width: 121px; 73 height: 35px; 74 line-height: 35px; 75 font-size: 12px; 76 margin: 10px 0; 77} 78 79div#popular div.article p.text, 80div#new div.article p.text { 81 margin-left: 10px; 82} 83 84div#popular, 85div#new { 86 margin: 0 2.5%; 87} 88 89div.only_pc { 90 display: none; 91} 92 93 94 @media (min-width: 769px) { 95 96 div#popular div.article, 97 div#new div.article { 98 width: 32%; 99 margin-right: 1%; 100 } 101 102 } 103 104 105 @media (min-width: 993px) { 106 107 div#popular div.article, 108 div#new div.article { 109 width: 18%; 110 margin-right: 2%; 111 border: 0; 112 } 113 114 div.only_pc { 115 display: block; 116 } 117 118 } 119 120 121 @media (min-width: 1200px) { 122 div#popular { 123 max-width: 1200px; 124 margin: 0 auto; 125 } 126 } 127

PHP

1<div id="popular_wrapper"> 2 3 <h1><i class="fas fa-flag"></i> 人気のある記事</h1> 4 5 <div id="popular" class="row"> 6 7 <?php 8 $news_query = new WP_Query( 9 array( 10 'post_type' => 'post', 11 'posts_per_page' => 5, 12 'orderby' => 'rand', 13 ) 14 ); 15 16 if ( $news_query->have_posts()) : 17 while ( $news_query->have_posts()) : 18 $news_query->the_post(); 19 ?> 20 <div class="article mb-3"> 21 <img class="img-fluid" src="<?php the_post_thumbnail(); ?> 22 <p class=" category">カテゴリー#1</p> 23 <p class="text"><?php the_title(); ?></p> 24 <p class="number number1">No.1</p> 25 </div> 26 27 <?php endwhile; ?> 28 <?php else: ?> 29 <p>記事はありません!</p> 30 <?php endif; ?> 31 <?php wp_reset_postdata(); ?> 32 33 </div> 34 35</div>

試したこと

Xeory Extensionという無料テーマを自分なりに模写したものを試しにWordPress化しようとしていて、Xeory Extensionのソースコードを見てみたけど正直よくわからない・・・というレベルです・・・

その他

今回の質問の趣旨とは話が変わりますが・・・

<img class="img-fluid" src="<?php the_post_thumbnail(); ?>

上記に「">」を加えてimgタグを閉じるとなぜか「">」という文字が画面に表示されてしまいます。
気持ち悪いですが「">」を省くと表示されないので一旦このようにしています。

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

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

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

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

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

guest

回答3

0

<img class="img-fluid" src="<?php the_post_thumbnail(); ?>

the_post_thumbnailはimgタグを出力します
サムネール画像のURLを出力したいならthe_post_thumbnail_url

投稿2020/07/24 01:37

KazuhiroHatano

総合スコア7804

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

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

0

PHPはあくまで情報を出力しているだけなので「PHPにレスポンシブを」という考え方にはなりません。出力されたHTMLだけを見るべきです。
ブラウザで「HTMLソースを表示」をして、想定したHTMLになっているか確認し、なっていなければ元のPHP含めたコードの出力内容を調整してください。

投稿2020/07/23 20:59

m.ts10806

総合スコア80850

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

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

0

ベストアンサー

他の方も書かれていますが。
phpはthmlを出力する為のものです。

wp_mobile などデバイスごとの出力は別として
基本的に、レスポンシブも含め装飾はcssが担っています。

HTML/CSS の時に問題が無かったのであれば
HTML ⇒ PHP の置き換え時に
class や id を落としてしまったとか
間違ったwordpressタグを使ったとか
その辺りではないでしょうか?

phpが何か? も理解していないで
最初から大きな部分を置き換えるのではなく
例えば、

● リンクだけを載せてみる
● それが出来たらタグを調べながら画像を置き換えてみる

・・・

というように、一か所づつ変更し
WordpressCodexなどで、
タグの意味を理解しながら作成される事をお勧めしますm(__)m

投稿2020/07/24 08:37

-millmill-

総合スコア674

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

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

yusuke_2020

2020/07/24 14:16

ご回答頂き、ありがとうございます。 私の質問の仕方が言葉足らずでしたね・・・ うまくいっていない理由は本文でも軽く記載しておりますが、 while文で書き換えたことによって、5つの記事の中の後ろ2つに付与している .only_pcクラスのdisplay: none;が効かせられなくなったからです。 仰る通り大きな置き換えをせずに実現できればいいのですが、 WordPressの管理画面から投稿したものが反映されるようにしたいので、 ループの為にwhile文を書こうとするとどうしても大きく書き換えをせざるを得ない のではないかと考え、現状に至っている次第です。 度々恐れ入りますが、改めてご教授頂きたく思います。 ・そもそも今回のケースで私の考えていることが実現できるものなのかどうか ・HTMLで5つの記事部分のベースはそのままで、 PHPを当て込むことで管理画面から投稿したものが反映されるようにできるものなのか (ご回答を受けて改めて考えてみましたが、正直わからなくて悩んでます・・・) ・見た目大きく書き換えたとしても、 結果的に後ろ2つの記事に.only_pcクラスを付与させることができるのかどうか
-millmill-

2020/07/25 16:25 編集

回答が遅くなり、また、ご質問の意味を取り違えてしまいすみませんm(__)m cssでhiddenにするだけなら、$i++ などでnumberingさせて、それにスタイルを当てる方が簡単かと思います^^;; <div class="article mb-3 post<?php echo $i ?>"> のようにして、post4,post5 をhiddenさせる感じですね。
yusuke_2020

2020/07/27 02:20

解決しました!ありがとうございました! ご記載の通り$i++でpost1~5と出力されるようにして、 CSSで.only_pcのところをpost4とpost5で当て込んだら普通にいけました。 まだまだ引き出しが少ない状況なのでこれからも精進していきたいと思います。 他の方々もいろいろとアドバイス頂き、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問