記事一覧などのアーカイブページで、各記事のサムネイルを表示させるコードを紹介します。投稿画面でサムネ画像を設定していない場合にもデフォルトで設定した画像が表示されます。
目次
PHPのif文の書き方
if文の条件分岐で、投稿画面でサムネ画像を用意した場合と用意していない場合の設定をします。
<!-- サムネイル -->
<div class="post-img-wrapper">
<?php if (has_post_thumbnail()) : ?>
<!-- 投稿画面で設定したサムネイル画像 -->
<?php the_post_thumbnail(); ?>
<?php else : ?>
<!-- 投稿画面でサムネ未設定の場合に表示される画像 -->
<img src="<?php echo esc_url(get_template_directory_uri() . '/image/default-thumbnail.jpg'); ?>" alt="都会の夜景" class="default-thumbnail">
<?php endif; ?>
</div>
コード解説
- if文で条件分岐し、その投稿にサムネイルが設定されていれば「has_post_thumbnail()」、サムネイルを「the_post_thumbnail()」で表示させる。
- サムネイルが設定されてなければ、下記コードで設定した画像を使う(url読み出しはエスケープ処理をしましょう)。
<img src="<?php echo esc_url(get_template_directory_uri() . '/image/default-thumbnail.jpg'); ?>" alt="都会の夜景" class="default-thumbnail">
デフォルトのサムネイル画像へのパスは、各自で異なりますので適宜変更して下さい。
【WordPress】画面表示のエスケープ処理【セキュリティ対策】 | SIMS-CODE
3つのエスケープ処理、esc_url()、esc_url()、esc_attr()について使用例を紹介します。また、エスケープ処理の必要ないWordPress関数も合わせて紹介します。
CSSの参考コード
CSSはお好みで設定すれば良いですが、参考コードをしたに置いておきます。
注意点としては、「the_post_thumbnail()」で表示させたimgタグには、WordPressによって自動的に「wp-post-image」というクラス属性が付与されますので、これに対してCSSを書いて下さい。
// サムネイル画像の枠
.post-img-wrapper {
height: 200px; //任意の数字に設定
width: 100%;
max-width: 340px; //任意の数字に設定
max-height: 200px; //任意の数字に設定
overflow: hidden;
}
// サムネイル画像
.wp-post-image, //サムネイル画像
.default-thumbnail{ //デフォルト設定のサムネイル画像(投稿画面でサムネ設定しなかった場合に表示)
object-fit: cover;
transition: all .6s ease;
width: 100%;
height: 100%;
max-width: 340px; //任意の数字に設定
max-height: 200px; //任意の数字に設定
}
// サムネイルのホバー時拡大アニメーション(オマケ)
@media (hover: hover) {
.post_wrapper:hover .wp-post-image,
.post_wrapper:hover .default-thumbnail{
transform: scale(1.1);
}
}