ワードプレス「コメント一覧ページでアバター画像の表示を切り換える方法」
先日、自作の固定ページからテンプレートファイル「comments.php」を呼び出して、wordpressのサイトに投稿されたコメントを一覧できるページを作ったのですが、その時、投稿者のアバター画像切り替えが少し面倒だったので、備忘録でまとめておきます。
目次
コメント一覧ページの投稿者アバター画像がうまく変わらない時の対応方法
問題の概要
wp_list_comments();のコールバック関数を利用することで、非推奨ではありながら、色々と好きなようにコメントパーツの吐き出しができるのですが、この時にアバター画像だけ少し面倒でした。
get avatar();を使って、画像を出力する時、この引数は「ユーザーID」もしくは「E-mail」となります。しかし、wp_list_comments();の中で、ユーザーIDを取得しようと、get_the_author_meta();を使っても、管理者と読者の返却値はどちらも「1」になってしまい、判別ができませんでした。
もしかしたら、アバターを複数作成すれば、それぞれにIDが割り振られるのかもしれませんが、どうも、それ以外では区別がつかない様子。
つまり、投稿されたコメントのID情報から、画像の判別ができないという状況になりました。
そうなると、残りの判別手段は「E-mail」くらいです。
E-mailの判別で画像を切り換えた
$email = get_comment_author_email(); として、投稿者のE-mail文字列情報を取得。
if判別して、「管理者のメアドの時は管理者画像」とし、それ以外は「読者アイコン」としました。
ソースコード
該当箇所を抜き出すと、こんな感じです。
<?php $email = get_comment_author_email(); ?>
<?php if ($email == "自分のメアド"): ?>
<img src="****" alt="管理者アイコン">
<?php else: ?>
<img src="****" alt="読者アイコン">
<?php endif ?>
対象のページはこちら。読者と管理者のアイコンが判別して出力されています。
まとめ
読者がアイコンを自分で作るような掲示板の場合は、こんな雑な処理ではダメですが、とりあえず自分用ブログサイトのコメント機能では十分かと思います。