WordPressのアーカイブ(記事一覧)ページではサムネイル画像を「the_post_thumbnail()」などで表示させますが、そもそも投稿ページでサムネイル画像が未設定の場合には空欄になってしまい見栄えがよろしくありません。
その場合の対処法ですが、デフォルトのサムネイル画像を準備しておくと、上のような問題は起きなくなります。
可能であれば、下記参考記事のようにPHPのif文で書く方法を強くオススメ致します。
この記事では、上の参考記事で上手く表示できなかった場合の方法を紹介します。
デフォルトのサムネイル画像を設定する方法
今回紹介する方法は、本来、サムネイル画像(imgタグ)をラップするタグに対して、CSSのbackground-imageでデフォルトのサムネイル画像を設定しておく方法です。
この方法を使えば、下記のようにサムネイルが空欄になることがありません。
- 投稿画面でサムネイル画像を設定した場合:デフォルト画像(background-image)の上に「投稿画面で設定したサムネイル」が表示される
- 投稿画面でサムネイル画像を設定してない場合:「デフォルトのサムネイル画像(background-image)」が表示される
参考コードを下に紹介しておきます。
<li class="post_wrapper">
<a href="<?php the_permalink(); ?>" class="archive_li-a">
<!-- サムネイル -->
<div class="post-img-wrapper">
<!-- デフォルトのサムネイル画像 -->
<div class="post-img-wrapper02">
<!-- 投稿画面で設定したサムネイル画像 -->
<?php the_post_thumbnail('large'); ?>
</div>
</div>
</a>
</li>
// サムネイル画像をラップするタグ
.post-img-wrapper {
height: 200px;
width: 100%;
overflow: hidden;
}
// デフォルトのサムネイル画像
.post-img-wrapper02{
background-image: url(../image/home-company.jpg);
background-size: cover;
width: 100%;
height: 200px;
transition: transform .6s ease;
}
// サムネイル画像
.wp-post-image {
object-fit: cover;
transition: all .6s ease;
}
// サムネイルのホバー時拡大アニメーション
@media (hover: hover) {
.post_wrapper:hover .wp-post-image {
transform: scale(1.1);
}
.post_wrapper:hover .post-img-wrapper02 {
transform: scale(1.1);
}
}
注意点として、background-imageの相対パスは制作環境によって異なるので、間違えないようにして下さい。
サムネイル画像のimgタグを2重にタグで囲っている理由は、デフォルトのサムネイル画像をマウスホバーで拡大するアニメーション設定で、さらにその親のタグが必要になるためです。
注意事項:opacity
この方法を使う場合には、サムネイルをマウスオーバーしたときのアニメーションにopacityを使うと、デフォルトで設定したサムネイル画像がマウスホバーで透けて見えてしまいます。
そのために、マウスオーバーによるサムネイル画像のアニメーションでは、opacityは使わずにサムネイル画像の拡大などで対応する必要があります。