最近のサイトでは、問い合わせフォームを用意して連絡してもらうというのが主流になりつつあるものの、まだまだ「こちらからメールを」というリンクを設置して、メールソフトから問い合わせてもらうという形で連絡をもらう機会は多いのではないかと思います。

通常、htmlタグを使う場合には以下のように本文などへ記述することで、クリックするとメールソフトが起動する仕組みになっています。

<a href="mailto:メールアドレス">文字列</a>

「文字列」の部分をクリックするとメールソフトが起動して、あて先に「メールアドレス」のアドレスが自動挿入される仕組みです。

簡単なhtmlコードで設置できて便利なのですが、htmlソース上に「メールアドレス」の部分が普通に出力されるため、自動ツールなどで収集されてスパムメールが届くようになるリスクがあります。

そこで今回は、ショートコードを使って、メールリンクのメールアドレスを自動ツールなどで収集されにくくする(難読化する)WordPress向けのコードを紹介します。

本ページの方法は収集されにくくするものであり、100%収集されないという保証はありません

本機能の実装には以下のスキルが必要です。

  • テーマのfunctions.phpへ何かのコードを追加してカスタマイズした経験のある方
  • コード追加によって不測の事態が発生しても自身で対処できる方
  • なんとなくでもPHPについて理解されている方

ショートコードを使ってメールリンクのメールアドレスを難読化する方法

有効化しているテーマの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以降で標準装備されています。