こばゆた
デフォルトでは記事にサムネイルを追加できないので、今回の記事ではそれをできるようにしていきます。
こばゆた
サムネイルを表示するには以下の手順が必要になってきます
1.functions.phpにコードを記入する
サムネイルを追加するにはadd_theme_supportという関数を使います。
今回はサムネイルを編集できるようにしたいのでパラメータに”post-thumbnails”と入れます。
add_theme_support('post-thumbnails');
すると記事編集画面でサムネイルを設定することができるようになります。
適用前
適用前
チャッピー
サムネイルの入力欄ができてる!
2.記事にサムネイルを設定する
次は記事の投稿からサムネイルを設定していきます。
こちらの動画のように入れたい画像を選択するだけでOKです。
同様に他の記事にもサムネイルを設定します。
3.任意の場所にテンプレートタグを埋め込む
3-1the_post_thumbnail
トップページや記事にサムネイルを表示させるにはthe_post_thumbnailというタグを使います。
3-2.埋め込む
記事のループの画像が入っているところに埋め込みます。
変更前は以下のような形でした
<ul class="post">
<?php if(have_posts()): while(have_posts()) : the_post(); ?>
<li>
<img src="<?php echo get_template_directory_uri(); ?>/images/banners/eyecatch1.jpg"><h3><a href="<?php the_permalink(); ?>"><?php the_title()?></a></h3><p><?php the_excerpt(); ?></p>
</li>
<?php endwhile; ?>
<?php else : ?>
<p>記事がありません</p>
<?php endif; ?>
</ul>
サムネイルのところのimgタグと入れ替えるとこの様なコードになります。
<ul class="post">
<?php if(have_posts()): while(have_posts()) : the_post(); ?>
<li>
<?php the_post_thumbnail(array(150, 100)); ?>
</li>
<?php endwhile; ?>
<?php else : ?>
<p>記事がありません</p>
<?php endif; ?>
</ul>
反映結果をみてみると…
こばゆた
サムネイルが表示できました
きなこ
でも設定していないとこには何も画像が出ないので少し違和感があるね
こばゆた
何も画像が出ないのはデザイン的にも変ですし不親切ですね。
なのでif文で分岐を作りサムネイルが設定されていれば画像を表示し、サムネイルが設定されていなければされていない用の画像が表示される様にしましょう!
<?php if (has_post_thumbnail()) : ?> <!--サムネイルがあれば-->
<?php the_post_thumbnail(); ?> <!--投稿されたサムネイルを表示-->
<?php else : ?> <!--サムネイルが無ければ-->
<img src="/"> <!--サムネイルが無い時の画像を表示-->
<?php endif ?>
ちなみにダミー画像はこちらのサイトで生成できるので作っておくと便利です。
placehold.jp | 簡単!ダミー画像作成
簡単!ダミー画像生成、モックアップ用画像作成ツール。文字やサイズ、メモを入れた仮の画像を簡単に作成できます。
先程のコードを挟んで追加します。
<ul class="post">
<?php if(have_posts()): while(have_posts()) : the_post(); ?>
<li>
<?php if (has_post_thumbnail()) : ?> <!--サムネイルがあれば-->
<?php the_post_thumbnail(array(150, 100)); ?> <!--投稿されたサムネイルを表示-->
<?php else : ?> <!--サムネイルが無ければ-->
<img src="<?php echo get_template_directory_uri(); ?>/images/no-image_150x100.png"> <!--サムネイルが無い時の画像を表示-->
<?php endif ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title()?></a></h3><p><?php the_excerpt(); ?></p>
</li>
<?php endwhile; ?>
<?php else : ?>
<p>記事がありません</p>
<?php endif; ?>
</ul>
ちゃんと分岐されて表示されました!
ちなみにurlのみを取得したい場合は以下のコードを記述します。
<?php the_post_thumbnail_url(); ?>
コメント