よもやまチョモランマ

サムネイルに呼びだす画像の4段活用

WordPressを作成していると、画像の扱いにしばしば苦悩する。

今回は「このカテゴリの時はサムネイルにこの画像を表示したいんだよなぁ」というところから始まった。

サムネイルに呼びだせる画像は3パターン。
 1. 投稿記事で設定したアイキャッチ
 2. 投稿記事にメディア挿入した画像
 3. テンプレートで条件分岐でimagesフォルダから指定した画像

この中で、王道であるアイキャッチがまず消えた。
一つの画像を一つの記事でしか表示できないのだ。
いや、設定自体はできるけど、一覧になったとき、サムネイルが表示されるのは最初に設定した記事のみだったのだ。
今回のような「このカテゴリの時はこの画像」というミッションは不可。

記事内の画像も「メディアでの紐づけ」という点からいえば、同様かもしれない。要検証。
大丈夫だったとしても、記事を書くたび最初にすることが「サムネイルのための画像をメディアから挿入」では煩わしい。
クライアントによけいな手間がかかるのは却下だ。

結果、テンプレートで条件分岐、ということになる。
カテゴリーの数にあわせてコードの行数が増えてゆくのは、やむをえまい。
ここまできて、サムネイル画像にクラスあてて、CSSで背景画像を・・・なんてのもややこしい。

というわけで、運営がラクをするためのサムネイルとは
 1. まず記事に「アイキャッチ」が設定されていることが大前提で
 2. アイキャッチがなくても「記事内の画像」を勝手に取得し
 3. それもなければ「カテゴリーごとにアイコン」でも表示させておいて
 4. カテゴリーすらないような記事には「no-image」でも表示しといてくれる
そんな4段階の分岐が必要なのであった。

<span class="list-img">

<?php
$args = array(
  'post_parent' => $post->ID,
  'post_type' => 'attachment',
  'post_mine_type' => 'image',
  'order' => 'ASC',
  'posts_per_page' => 1,
);
$attachments = get_children($args);
?>

<?php if( !empty($attachments) ): ?>
<?php foreach($attachments as $attachment): ?>
<?php $url = wp_get_attachment_image_src($attachment->ID, 'sidebar-thumbnail'); ?>
<?php $alt = esc_html(get_post_meta($attachment->ID, '_wp_attachment_image_alt', true)); ?>
<img src="<?php echo $url[0]; ?>" alt="<?php echo $alt; ?>" />
<?php endforeach; ?>

<?php elseif(in_category('voice')) : ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/●●.png" alt=""/>
<?php elseif(in_category('sozai')) : ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/●●.png" alt=""/>
<?php elseif(in_category('nikki')) : ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/●●.png" alt=""/>
<?php elseif(in_category('nikki2')) : ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/●●.png" alt=""/>
	
<?php else: ?>
<img src="<?php echo get_template_directory_uri(); ?>/images/no-image.gif" alt=""/>
<?php endif; ?>

</span>

こいつぁ長げぇ・・・
悩む時間もそりゃぁ長くなるってもんよ・・・