MENU

comment_author_email()

comment_author_email() は、コメント投稿者のメールアドレスを取得して表示するテンプレートタグです。WordPressのコメントテンプレート内で使用され、投稿された各コメントに紐づくメールアドレスを取得できます。

目次

機能の説明

comment_author_email() は、特定のコメントの投稿者が入力したメールアドレスを取得・出力するテンプレートタグです。このタグは、comments.php ファイルのコメントループ内で使用され、表示や管理、メール送信機能に応用できます。

シンプルなコード例

<?php comment_author_email(); ?>

現在のコメントの投稿者が入力したメールアドレスを表示します。メールアドレスはそのまま出力されるため、適切なエスケープが必要です。

使い方の解説

  1. comment_author_email() は、comments.php などのコメントテンプレートで、コメントのループ内で使います。
  2. 返されるのは投稿者のメールアドレスですが、コメントが匿名の場合は空の値が返ります。
  3. データの出力前に esc_html() などでエスケープすることで、セキュリティリスクを防ぎます。

使用例

<li>
    <strong><?php comment_author(); ?></strong>  
    <p>Email: <?php echo esc_html(comment_author_email()); ?></p>
</li>

このコードでは、comment_author() で投稿者の名前を表示し、その下に comment_author_email() でメールアドレスを出力しています。

一緒に使うことが多い関連タグ

comment_author()

コメント投稿者の名前を表示するテンプレートタグです。

<strong><?php comment_author(); ?></strong>

このコードは、現在のコメントの投稿者名を取得して表示します。

get_comment_author_email()

comment_author_email()返り値を取得するための関数です。comment_author_email() は直接表示するのに対し、get_comment_author_email() は文字列として扱えるため、加工や条件分岐に適しています。

<?php 
$email = get_comment_author_email();
if ($email) {
    echo '<p>Email: ' . esc_html($email) . '</p>';
}
?>

このコードでは、get_comment_author_email() を使ってメールアドレスを取得し、存在する場合のみ出力しています。

comment_author_url()

コメント投稿者が入力したウェブサイトURLを表示します。

<?php 
$url = comment_author_url();
if ($url) {
    echo '<a href="' . esc_url($url) . '">' . comment_author() . '</a>';
}
?>

このコードは、投稿者が入力したURLをリンクとして名前の部分に出力します。

使用例(複数タグの組み合わせ)

<li>
    <strong><?php comment_author(); ?></strong>
    <p>Email: <?php echo esc_html(comment_author_email()); ?></p>
    <p>Website: <a href="<?php echo esc_url(comment_author_url()); ?>"><?php comment_author(); ?></a></p>
</li>

この例では、コメント投稿者の名前、メールアドレス、ウェブサイトURLを順番に表示しています。各出力に適切なエスケープを行い、XSS攻撃を防いでいます。

追加情報を取得したい場合

投稿者のメールアドレスを条件にした表示

メールアドレスが特定のドメインに一致する場合のみ、カスタムメッセージを表示する例です。

<?php 
$email = get_comment_author_email();
if (strpos($email, '@example.com') !== false) {
    echo '<p>このコメントは example.com からの投稿者です。</p>';
}
?>

このコードは、メールアドレスが @example.com ドメインに属している場合、特定のメッセージを表示します。

get_comment_author() で取得できる情報

<?php echo get_comment_author(); ?>

この関数は、コメント投稿者の名前を取得します

出力できる情報

  • name:コメント投稿者の名前
  • email:メールアドレス
  • url:ウェブサイトURL

想定されるトラブル

メールアドレスが表示されない

匿名コメントが許可されている場合、メールアドレスが設定されないことがあります。

解決方法

コメントフォームで「メールアドレスの入力を必須」に設定してください。

メールアドレスの露出によるスパムリスク

メールアドレスをそのまま表示すると、スパムボットに収集される可能性があります。

解決方法

メールアドレスを部分的に隠すか、JavaScriptで出力するなどの対応を行います。

<?php 
$email = get_comment_author_email();
echo str_replace('@', ' [at] ', esc_html($email));
?>
このコードは、メールアドレスの「@」を「 [at] 」に置き換えて表示し、スパムボットによる収集を防ぎます

Q&A

メールアドレスをリンクとして表示するにはどうすればよいですか?

以下のように mailto: スキームを使うと、クリックでメールを送れるリンクになります。

<?php 
$email = get_comment_author_email();
echo '<a href="mailto:' . esc_attr($email) . '">' . esc_html($email) . '</a>';
?>

匿名コメントの場合、どう対応すればよいですか?

匿名コメントが許可されている場合、メールアドレスが存在しない可能性があるので、条件分岐で対応します。

<?php 
$email = get_comment_author_email();
if ($email) {
    echo esc_html($email);
} else {
    echo 'メールアドレスが未登録です。';
}
?>

まとめ

comment_author_email() は、コメント投稿者のメールアドレスを取得・表示するためのテンプレートタグです。

匿名コメントやセキュリティリスクへの対応が必要な場合もありますが、esc_html()get_comment_author_email() と組み合わせることで、柔軟な表示が可能になります。

また、comment_author()comment_author_url() などの関連タグと併用することで、コメントの表示をさらに充実させることができます。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次