著者別アーカイブページなどで、各著者毎に別の画像を表示したりと、見た目を変えたい時の条件分岐についてです。
クライアントワークにて、著者別アーカイブページで、それぞれのユーザーに異なる画像を設置したいという要望をいただきました。その時の実装メモになります。
WordPressで著者毎に表示を変えるための条件分岐
著者毎に表示を切り替えるには、以下のようにswitchを使って、ユーザーID毎に条件分岐させます。
<?php
switch (get_the_author_ID()) {
case 1:
print '<div class="authors-img"><img src="' .get_template_directory_uri(). '/images/author/author1.jpg"></div>';
break;
case 2:
print '<div class="authors-img"><img src="' .get_template_directory_uri(). '/images/author/author2.jpg"></div>';
break;
case 3:
print '<div class="authors-img"><img src="' .get_template_directory_uri(). '/images/author/author3.jpg"></div>';
break;
default:
break;
} ?>
今回実装したのはauthor.phpで、著者のアーカイブページに固有の画像を表示させました。上記ではテーマフォルダ配下の/images/author/author○.jpgが表示されます。
get_the_author_ID関数で著者のIDを取得しています。caseでユーザーIDを指定し、それぞれ異なる画像を表示するようにしています。
上記は画像を表示した例ですが、処理については適宜ご変更ください。
正常に条件分岐されない場合
もしも上述した方法でうまく動かない場合は、is_authorで条件分岐させてみてください。
<?php if ( is_author('1')): ?>
<div class="authors-img"><img src="<?php echo get_template_directory_uri(); ?>/images/author/author1.jpg"></div>
<?php elseif ( is_author('2')): ?>
<div class="authors-img"><img src="<?php echo get_template_directory_uri(); ?>/images/author/author2.jpg"></div>
<?php elseif ( is_author('3')): ?>
<div class="authors-img"><img src="<?php echo get_template_directory_uri(); ?>/images/author/author3.jpg"></div>
<?php else: ?>
<div class="authors-img"><img src="<?php echo get_template_directory_uri(); ?>/images/author/author-etc.jpg"></div>
<?php endif; ?>
is_authorの数字部分にユーザーIDを指定します。
前にget_the_author_IDでちゃんとユーザーIDを取得できないことがあって、is_authorで条件分岐させたら正常に表示を切り替えることができました。
ユーザー数が多くて半自動化したい場合
ユーザーの数が多くて、いちいち一人ずつ条件分岐させるのが面倒な場合は、以下のように半自動化することもできます。
<?php
$author_jpg_check = get_stylesheet_directory().'/images/author/author'.$author.'.jpg';
$author_png_check = get_stylesheet_directory().'/images/author/author'.$author.'.png';
$author_jpg = get_stylesheet_directory_uri().'/images/author/author'.$author.'.jpg';
$author_png = get_stylesheet_directory_uri().'/images/author/author'.$author.'.png';
if(file_exists($author_jpg_check)){
echo '<div class="authors-img"><img src="'.$author_jpg.'"></div>';
} elseif(file_exists($author_png_check)) {
echo '<div class="authors-img"><img src="'.$author_png.'"></div>';
} else {}
?>
authorディレクトリの中にauthor〇〇.jpgもしくはauthor〇〇.pngがあるかどうかをチェックして、ある場合は表示しています。
あとがき
複数人で運営しているブログで、著者別アーカイブページを作り込みたい時に活用できるかと思います。あとは、記事ページで著者毎に表示を切り替えるのも良いですね。
複数人でブログを運営している場合は、ぜひ参考にしていただければと思います。

