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
まとめ
comment_author_email_link()
は、コメント投稿者のメールアドレスをmailto:
リンクとして表示する便利なテンプレートタグです。
get_comment_author_email()
や comment_author()
などの関連タグと組み合わせることで、コメント投稿者に関する情報を効果的に表示できます。
ただし、スパムボットによるメールアドレス収集のリスクがあるため、セキュリティ対策が必要です。
コメント