MENU

comment_author_email_link()

comment_author_email_link() は、コメント投稿者のメールアドレスをリンク形式で表示するテンプレートタグです。このリンクをクリックすると、mailto: スキームが利用され、メールクライアントが起動して投稿者に直接メールを送信することができます。

目次

機能の説明

comment_author_email_link() は、コメント投稿者のメールアドレスをmailto:リンクとして出力するためのテンプレートタグです。投稿者の連絡用メールアドレスを表示する際に利用されますが、スパム対策を施して使用することが推奨されます。

シンプルなコード例

<?php comment_author_email_link(); ?>

このコードは、コメント投稿者のメールアドレスをメールリンク形式で出力します。クリックすると、ユーザーのメールクライアントが起動します。

使い方の解説

  • コメントループの内部で使用するのが一般的です。
  • mailto:リンクを生成するため、クリックするとメールソフトが開かれ、投稿者へのメールが簡単に送信できます。
  • セキュリティ対策として、スパムボット対策や、匿名コメントを考慮する必要があります。

使用例

<li>
    <p>Contact the author: <?php comment_author_email_link(); ?></p>
</li>

このコードは、コメント投稿者のメールアドレスを「Contact the author: 」というテキストとともに表示し、クリックするとメールが送信できるようにしています。

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

get_comment_author_email()

コメント投稿者のメールアドレスを文字列として取得するタグです。

comment_author_email_link() はそのままリンクを表示しますが、get_comment_author_email() はメールアドレスを取得し、カスタマイズが可能です。

<?php 
$email = get_comment_author_email();
if ($email) {
    echo '<a href="mailto:' . esc_attr($email) . '">Email the author</a>';
}
?>

この例では、取得したメールアドレスを利用して、カスタムリンクを生成しています。

comment_author()

コメント投稿者の名前を取得して表示するテンプレートタグです。名前とメールリンクを組み合わせて使用することが多いです。

<p><?php comment_author(); ?> (<a href="mailto:<?php echo esc_attr(get_comment_author_email()); ?>">Email</a>)</p>

このコードは、投稿者の名前とメールリンクを表示し、クリックでメールを送信できるようにしています。

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

<li>
    <p><strong><?php comment_author(); ?></strong></p>
    <p>Contact: <?php comment_author_email_link(); ?></p>
</li>

このコードは、コメント投稿者の名前とメールリンクを組み合わせて表示する例です。

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

投稿者のメールアドレスが特定のドメインの場合のみ、カスタムメッセージを表示するなどの処理が可能です。

<?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(comment_author_url() で取得)

想定されるトラブル

メールリンクが表示されない

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

解決方法

匿名コメントを無効化し、フォームでメールアドレスを必須項目にします。

メールアドレスがスパムにさらされる

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

JavaScriptなどを使って、メールアドレスを動的に表示する方法があります。

<?php 
$email = get_comment_author_email();
echo str_replace('@', ' [at] ', esc_html($email));
?>

このコードは、「@」記号を「 [at] 」に置き換えることで、スパムボットによるメールアドレスの収集を防ぎます。

Q&A

メールリンクに件名を追加するにはどうすればいいですか?

以下のように、mailto:リンクに ?subject= パラメータを追加することで、メールの件名を事前に設定できます。

<?php 
$email = get_comment_author_email();
echo '<a href="mailto:' . esc_attr($email) . '?subject=Your Comment">Email the author</a>';
?>

メールアドレスを入力しないコメントはどう処理すればいいですか?

以下のように、条件分岐でメールアドレスがない場合の表示を制御できます。

<?php 
$email = get_comment_author_email();
if ($email) {
    echo '<a href="mailto:' . esc_attr($email) . '">Email</a>';
} else {
    echo 'メールアドレスが登録されていません。';
}
?>

まとめ

comment_author_email_link() は、コメント投稿者のメールアドレスをmailto:リンクとして表示する便利なテンプレートタグです。

get_comment_author_email()comment_author() などの関連タグと組み合わせることで、コメント投稿者に関する情報を効果的に表示できます。

ただし、スパムボットによるメールアドレス収集のリスクがあるため、セキュリティ対策が必要です。

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

コメント

コメントする

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

目次