最近のサイトでは、問い合わせフォームを用意して連絡してもらうというのが主流になりつつあるものの、まだまだ「こちらからメールを」というリンクを設置して、メールソフトから問い合わせてもらうという形で連絡をもらう機会は多いのではないかと思います。
通常、htmlタグを使う場合には以下のように本文などへ記述することで、クリックするとメールソフトが起動する仕組みになっています。
<a href="mailto:メールアドレス">文字列</a>
「文字列」の部分をクリックするとメールソフトが起動して、あて先に「メールアドレス」のアドレスが自動挿入される仕組みです。
簡単なhtmlコードで設置できて便利なのですが、htmlソース上に「メールアドレス」の部分が普通に出力されるため、自動ツールなどで収集されてスパムメールが届くようになるリスクがあります。
そこで今回は、ショートコードを使って、メールリンクのメールアドレスを自動ツールなどで収集されにくくする(難読化する)WordPress向けのコードを紹介します。
本ページの方法は収集されにくくするものであり、100%収集されないという保証はありません
本ページ掲載のコードを使用するときは
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
ショートコードを使ってメールリンクのメールアドレスを難読化する方法
有効化しているテーマのfunctions.phpへ以下のコードを挿入します。
/***** メールリンクの難読化 ******/
if ( !function_exists( 'ha_mail_link_obfuscation_shortcode' ) ){
function ha_mail_link_obfuscation_shortcode($atts){
extract(shortcode_atts(array(
'mail' => '',
'text' => '',
), $atts));
//ショートコードにパラメーターがないときの処理
if($mail==false){
$mail='';
}
if($text==false){
$text=antispambot( $mail );
}
//件名の自動入力
if($sub==true){
$sub = '?subject='.$sub;
}
//正しい処理でないときのメッセージ
$message = 'ショートコードを正しく使用してください';
//メールアドレスかどうかの判別
if ( is_email( $mail ) ) {
//メールアドレスの場合
return '<a href="' . esc_url('mailto:' . antispambot( $mail ) ) . $sub . '">' . $text . '</a>';
}else{
//メールアドレスでない場合
return $message;
}
}
}
add_shortcode('mail-link', 'ha_mail_link_obfuscation_shortcode');
コードを追加したら、以下のショートコードを本文内やウィジェット等へ挿入します。
[mail-link text='リンクの文字列' mail='メールアドレス' sub='件名']
- ショートコードの「リンクの文字列」「メールアドレス」「件名」を自身のものに書き換えてください
- 「リンクの文字列」を空白(”)にすると、メールアドレスがリンク文字列になります
- 「件名」は入力したときだけメールの件名に自動入力されます
プレビューなどをソース表示して、ショートコードを挿入した場所に出力されているメールアドレスが不思議な文字列になっていれば機能追加完了です。
このショートコードでは、以下の場合にすべてエラーとなり「ショートコードを正しく使用してください」という文字列が出力されるようにしています。
- ショートコードの「メールアドレス」部分がメールアドレスでない場合
- ショートコード中の「text=”」「mail=”」の部分がない場合
- ショートコード中の「mail=”」の部分が空白の場合
この機能を使って実際に作っているリンクが[mail-link text=’こちら’ mail=’mailhatodokimasen@habone.biz/habone’ sub=’件名ですよ’]です。
クリックすると、メールソフトが開き、宛先に「[email]mailhatodokimasen@habone.biz/habone[/email]」、件名に「件名ですよ」という文字列が自動挿入されることを確認できます。
実際にメールを送信されても届きませんのでご注意ください
この機能で使用している関数等
is_email(string $ email、 bool $ deprecated = false )
antispambot (string $ email_address、 int $ hex_encoding )
本機能はHABONEテーマ2.0以降で標準装備されています。