Cocoonのスキンを「SILK」にしたら、ブログカードがどうしても縦向きにしかならなくなりました。
パソコンで見ると、サムネイルの下にテキストが並んだ縦長のカードが、記事の真ん中にポツンと出る形になります。
私はこれが気になっていました。カードが縦に伸びるぶん、読者の視線がそこで下に落ちて、本文の流れから外れてしまう感じがしたからです。
ーーーーーーーーーーーーーーーー👇外部リンクではありません👇ーーーーーーーーーーーーーーーー

ーーーーーーーーーーーーーーーー👆外部リンクではありません👆ーーーーーーーーーーーーーーー
横向き(左にサムネイル・右にテキスト)にすれば視線が横に流れて、本文からそんなに外れないと思いました。
ただ、SILKスキンで横向きにする方法を、私が探した範囲では見つけられませんでした。
なので自分でCSSを組み直すことにしました!
実際に横向きにできたので、そのコードをそのまま置いておきます。
同じところで止まっている方の役に立てばと思います。
そもそもCocoonのブログカードが縦向きになる理由
先にコードだけ欲しい方は、次の見出しまで飛ばして大丈夫です。
Cocoonの親テーマのブログカードは、float: left と margin-left: 170px で組まれています。
サムネイルを左にfloatさせて、テキスト側に170pxの余白を空けて右に逃がす、という昔ながらの組み方です。
この構造のまま少しCSSをいじっても、横並びにはなってくれませんでした。
私は最初、フレックスボックス(display: flex)で横に並べようとしました。
ですが、親テーマのfloatやmarginが残っているせいで、レイアウトが全部ずれてしまいました。
そこで、floatで組まれた部分を一度打ち消して、CSS Grid で組み直す方針にしました。ここはClaudeに手伝ってもらいながら整えました。
実際に使った横向きブログカードのCSS(全文)
CSSを貼る場所について
私は開発環境(Docker + VSCode)でテーマのCSSファイルを直接さわって、GitHubで管理しています。
Dockerを使って WordPressの表示を確認する方法

ただ、同じCSSを 外観 → カスタマイズ → 追加CSS に貼っても、同じように反映されると思います。
手軽なのは追加CSSの方だと思います。
完成図

下のコードをそのままコピーして使えます。カード幅などは、コメントを付けた箇所で調整できます。
/********** ブログカード横向き **********/
/* ブログカードを横向き(左サムネイル・右テキスト)にする */
/* 幅と中央寄せは <a> 側(.blogcard-wrap)に持たせる。
ホバー背景は .a-wrap:hover に付くので、ここを枠と同じ幅にしないとはみ出す。 */
.entry-content .blogcard-wrap {
display: block;
width: 80%; /* カード幅。お好みで調整 */
max-width: 100%;
margin-left: auto;
margin-right: auto;
padding: 0; /* .a-wrap の padding:1.5% を解除(ホバー範囲=枠内) */
}
/* .blogcard の直下は label / thumbnail / content / footer。
label は Cocoon側で position:absolute なのでグリッドの外。
親テーマは float + margin-left:170px で組んでいるので、それを全部打ち消す。 */
.entry-content .blogcard {
display: grid;
grid-template-columns: 249px 1fr; /* 左のサムネイル幅。min-height の 16:9 に合わせる */
grid-template-areas:
"thumb content"
"thumb footer";
align-items: stretch; /* サムネイルをカードの高さいっぱいに伸ばす */
width: 100%;
max-width: 100%;
min-height: 140px; /* カードの高さ。249px の 16:9 = 140px */
padding: 0; /* 画像を枠に密着させるため、カード自体には余白を持たせない */
overflow: hidden; /* 画像を枠の角丸で切り抜く */
}
/* サムネイルが取得できなかった場合(Cocoonのスクショ機能OFF時など)は
左の空カラムが残ってしまうので、1カラムに畳む */
.entry-content .blogcard:has(.blogcard-thumbnail:empty) {
grid-template-columns: 1fr;
grid-template-areas:
"content"
"footer";
min-height: 0;
}
.entry-content .blogcard-thumbnail {
grid-area: thumb;
float: none; /* 親テーマの float:left を解除 */
width: 100%;
height: 100%;
margin: 0; /* 親テーマの margin-right:1.6% / margin-top:3px を解除 */
}
/* 内部カードの img は接頭辞付きクラスしか持たないので要素セレクタで指定。
object-fit: cover で、元画像の大きさに関係なく枠いっぱいに敷き詰める。 */
.entry-content .blogcard-thumbnail img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
border-radius: 0; /* 角丸は .blogcard の overflow:hidden 側で処理する */
}
/* 余白はテキスト側だけに持たせる(画像の上・左・下は枠に密着) */
.entry-content .blogcard-content {
grid-area: content;
margin-left: 0; /* ← タイトル左の余白の正体(親テーマの 170px) */
margin-right: 0;
width: auto;
padding: 10px 14px 0 20px;
min-width: 0; /* テキストが正しく折り返されるために必要 */
min-height: 0; /* 親テーマの min-height:100px を解除(下の余白の一因) */
max-height: none; /* 同 max-height:140px を解除 */
}
.entry-content .blogcard-footer {
grid-area: footer;
clear: none; /* 親テーマの clear:both を解除 */
align-self: end;
padding: 8px 14px 12px 20px;
}
.entry-content .blogcard-title {
font-size: 1.1em;
line-height: 1.5;
margin-bottom: 8px;
}
.entry-content .blogcard-snippet {
font-size: 13px;
line-height: 1.6;
}
/* スマホでは縦積みに戻す */
@media (max-width: 480px) {
.entry-content .blogcard {
grid-template-columns: 1fr;
grid-template-areas:
"thumb"
"content"
"footer";
min-height: 0;
}
/* 縦積みのときは高さを比率で決める(height:100% は伸びる先が無いため) */
.entry-content .blogcard-thumbnail img {
height: auto;
aspect-ratio: 16 / 9;
}
}このCSSが何をしているのか
丸ごとコピーで動きますが、あとから自分で調整したくなったとき用に、要点だけ書いておきます。
①親テーマのfloatを打ち消してGridにする
.blogcard を display: grid にして、左サムネイル(249px)+右テキスト(1fr)の2カラムに組み替えています。
あわせて、親テーマの float: left / margin-left: 170px / min-height: 100px / clear: both を解除しています。タイトルの左に空いていた余白の正体は、この margin-left: 170px でした。
②サムネイルをカードの高さいっぱいに表示する
サムネイルは object-fit: cover で、元画像の大きさに関係なくカードの枠いっぱいに敷き詰めています。
これで画像のサイズがバラバラでも、カードの高さが一定に保たれます。min-height: 140px は、左サムネイル 249px の 16:9 の高さです。
画像は枠に密着させて、余白はテキスト側だけに付けています。
③ホバーの範囲がカードからはみ出す問題
Cocoonのブログカードは、リンク全体(.a-wrap)に padding: 1.5% が付いていて、マウスを乗せたときの背景色がカードの枠からはみ出してしまいました。
これは、カードの幅と中央寄せを .blogcard-wrap(=リンクの <a> 側)に持たせて、.a-wrap の padding を解除することで、ホバーの範囲を枠の中に収めています。
④サムネイルが無いときとスマホ表示
Cocoonのスクショ機能がオフなどでサムネイルが取得できないと、左のカラムだけ空いてしまいます。
:has() を使って、その場合は自動で1カラムに畳むようにしています。
スマホ(480px以下)では、横並びをやめて縦積みに戻しています。縦積みのときは height: 100% が効かないので、aspect-ratio: 16 / 9 で画像の高さを確保しています。
私がハマったところ
横向きにする作業でいちばん時間がかかったのは、CSSそのものより「なぜか余白が消えない」「なぜか画像の下にすき間ができる」といった原因探しでした。同じ症状で止まったときのために、正体を残しておきます。
フレックスボックスだと全部ずれた
最初に書いたとおり、私は display: flex で横並びにしようとして、レイアウトが全部ずれました。
親テーマの float と margin が残っている状態だと、flexとケンカしてしまうようです。最終的に、floatを打ち消してGridで組み直したら、きれいに並びました。
サムネイル画像のクラス名が、内部リンクと外部リンクで違う
これがいちばん分かりにくかったところです。
内部リンクのカードのサムネイル画像には internal-blogcard-thumb-image というクラスしか付いておらず、blogcard-thumb-image が付いていませんでした。
クラス名でCSSを当てると、内部カードだけ効かない、ということが起きます。なので .blogcard-thumbnail img という要素セレクタで指定して、内部・外部どちらのカードにも効くようにしました。
画像の下にできる余白の正体
横並びにしたあと、画像の下に説明のつかないすき間ができていました。
調べたところ、親テーマに aspect-ratio: var(–card-ratio) という指定があり、その –card-ratio が未定義のまま無効になっていたのが原因でした。ここを打ち消したら、余白が消えました。
ラベルはGridの外にいる
.blogcard-label(カードに付くラベル)は、親テーマで position: absolute になっています。
absoluteの要素はGridの並びの対象外になるので、grid-template-areas には入れていません。ここを無理に並べようとすると崩れます。
まとめ
CocoonのSILKスキンでブログカードが縦向きにしかならないのは、親テーマがfloatで組まれているからでした。
私は、それを一度打ち消してCSS Gridで組み直すことで、左サムネイル・右テキストの横向きカードにできました。
ハマったのは、フレックスボックスだと崩れること、内部カードだけクラス名が違うこと、未定義のaspect-ratioが余白を作っていたこと、そしてラベルがabsoluteでGridの外にいることでした。この正体さえ分かれば、上のCSSをそのまま貼るだけで横向きになると思います。
私の開発ブログでは、実際にこの横向きカードを使っています。
例として貼っているのは、自作の画像トリミングツールのカードです。
簡単にトリミングができるものにしました。
ぜひ使ってみてください!

同じところで止まっていた方の遠回りが、少しでも減ればうれしいです。

