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

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

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

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

PHP

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

CSS

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

Q&A

解決済

1回答

629閲覧

Worpressの通販サイトの投稿記事下に、関連記事を2列&サムネイル付きで出したい。

Lilya

総合スコア1

WordPress

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

PHP

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

CSS

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

0グッド

0クリップ

投稿2020/08/27 07:47

前提・実現したいこと

WordpressのWelcart(テーマはWelcart Carina)を使った通販サイトの投稿記事の下に、関連記事を出したい。そして、その関連記事はサムネイル画像付きで、できれば2列(スマホ表示では1列)に表示させたい。

発生している問題・エラーメッセージ

single.phpにコードを追加して(初心者なので、コピペです)、一応関連記事が出るようになったが、2列にしたり、サムネイルと記事タイトルの間に余白を付けたり、などの細かいことができない。また、h2タグが効かない。

該当のソースコード

php

1<div class="relatedposts"> 2<?php 3 $categories = get_the_category(); 4 foreach($categories as $category): 5 $related_posts = get_posts(array('category__in' => array($category->cat_ID), 'exclude' => $post->ID, 'numberposts' => 3)); 6 if($related_posts): ?> 7<h2>関連記事</h2> 8<ul> 9<?php foreach($related_posts as $related_post): 10 $thumbnail = get_post_thumbnail_id( $related_post->ID ); 11 $src_info = wp_get_attachment_image_src($thumbnail, 'thumbnail'); 12 $src = $src_info[0]; 13 $width = $src_info[1]; 14 $height = $src_info[2]; 15 $title = $related_post->post_title; 16 ?> 17<li><a href="<?php echo get_permalink($related_post->ID); ?>"> 18<?php if ( has_post_thumbnail($related_post->ID) ) { 19 echo '<img src="'.$src.'" alt="'.$title.'" width="'.$width.'" height="'.$height.'" />'; 20 } ?><?php echo $title ?></a> 21</li><br> 22<?php endforeach; ?> 23</ul> 24<?php endif; endforeach; ?> 25</div>

試したこと

プラグイン(Yet Another Related Posts Plugin(YARPP))を入れてみましたが、全く機能しませんでした。
また、class名「relatedposts」でcssを少し変えてみたものの、こちらもあまり詳しくないため、表示が少々ずれただけであまり変わりませんでした。

補足情報(FW/ツールのバージョンなど)

WordPress 5.5 (Welcart Carina テーマ)

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

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

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

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

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

guest

回答1

0

ベストアンサー

お疲れ様です。出力はできているようなので、あとはCSSの問題かと存じます。
特に設定していなければ現在はお使いのテーマの仕様通りになっているはずです。
記事を2カラムにするならul要素にclassを追加し、display:flexを設定すると、直下の子要素を横並びにできます。直下のli要素はflex-basisやwidthを50%程度にしておくと、横に2つ並べることができます。
スマホ時1列にしたい場合はbreakpointで対応できます。
参考までにサンプルコードを下記に示しますが、テーマCSSによってはうまく動作しない可能性があります。なお、わかりやすいようにCSSにclassを付与しています。ご利用の際はphpのulおよびliにそれぞれclassを付与してください。

CSS

1ul.relatedposts-item-group { 2 display: flex; 3 flex-wrap: wrap; 4 align-content: space-between; 5} 6/* 50%以下にするとカラム間に余白ができる */ 7li.relatedposts-item { 8 flex-basis: 49%; 9 width: 49%; 10} 11/* 画像とタイトル余白 */ 12li.relatedposts-item > img { 13 padding: 1rem; 14} 15/* スマホ時は1列にする */ 16@media (max-width: 375px) { 17 li.relatedposts-item { 18 flex-basis: 100%; 19 width: 100%; 20 } 21} 22

示していただいたコードですが、</li>のあとの<br>は不要です。
h2要素についてはテーマCSSである場合(classがない見出し要素はリセットしているなど)が考えられるので、他の箇所でh2要素にどのようなclassが付与されているか確かめるとよいかもしれません。

投稿2020/08/28 01:09

sasa_

総合スコア140

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

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

Lilya

2020/08/28 02:58

ありがとうございます!! 使用しているテーマがかなり頑固で(笑。私の知識不足のせいです)、cssで何かを指定してもなかなかいうことを聞いてくれなかったのでやや諦めていたのですが、ご指示通りに指定したら2列にできました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問