メールアドレスをbotに拾われにくくする方法としてHTMLエンティティ化による「難読化」がありますが、WordPressでやるとビジュアルエディタが元のテキストに戻してしまいます。そのため、ショートコードを作ってやることで難読化します。
HTMLエンティティ化とは
sample@example.com
を
sample@example.com
のようにすることです。
ただ、これをそのままWordPressに張りつけるといつの間にかsample@example.com
に戻ってしまいます。ビジュアルエディタがエンティティを戻してしまうのです。
ショートコードの作成
WordPressにはantispambot()というロジックそのものはあるのですが、ショートコードは用意されていないので作ってやる必要があります。
functions.phpに次のものを追加します。
/**
* Hide email from Spam Bots using a shortcode.
*
* @param array $atts Shortcode attributes. Not used.
* @param string $content The shortcode content. Should be an email address.
*
* @return string The obfuscated email address.
*/
function wpcodex_hide_email_shortcode( $atts , $content = null ) {
if ( ! is_email( $content ) ) {
return;
}
return antispambot( $content );
}
add_shortcode( 'email', 'wpcodex_hide_email_shortcode' );
これはCodexのサンプルを少し改変したものです。Codexサンプルはaタグでmailtoリンクを返していますが、わざわざbotにメールアドレスであることを教えているようなものなのでaタグを外しました。
これで、次のようにショートコードを書くと難読化されます。
[email]sample@example.com[/email]
さらなる難読化はJavaScriptを使う
すこし賢いbotだとHTMLエンティティをデコードして拾っていきそうです。もっとがんばるにはJavaScriptで動的生成することですが、個人的にはそこまでする必要性を感じないので必要な方はググってください。scriptタグを上記wpcodex_hide_email_shortcode()
で返すようにすればOKですが、Autoptimizeプラグインとの相性は悪いのでご注意を。
最近のコメント