WordPress教程:防止网站内容中的 Email 地址被收集

有时候想在博客中向用户留言告诉他们读者的 email 地址,让用户直接通过 email 地址联系,但是这样简单展示 email 地址被机器收集,然后收到一大堆 spam。

WordPress教程:防止网站内容中的 Email 地址被收集

防止Email被机器收集

WordPress 默认有 antispambot 函数,它可以将 email 地址转换成机器无法识别而浏览器能够正确显示的邮件地址,所以我们可以在主题的 functions.php 文件中添加如下的代码:

add_shortcode( 'email', 'wpjam_email_shortcode_handler' );
function wpjam_email_shortcode_handler( $atts, $content='' ) {
    extract( shortcode_atts( array(
        'mailto' => '0'
    ), $atts ) );

    return antispambot( $content, $mailto );
}

 使用Antispambot ShortCode插件

Antispambot ShortCode 这个插件使用非常简单,上传激活之后,如果只是简单展示邮件地址,只需要在日志内容输入以下内容:

[email]you-email-address@email.com[/email]

显示效果:you-email-address@email.com

查看源代码,你会发现 email 地址 HTML 源代码已经是:

you-email-address@ email.com

这样的代码,机器人是很难收集的,但是普通用户则可以直接阅读,不受影响。

如果你想把 email 地址显示为连接,可以加上 link 参数,如:

[email link="1"]you-email-address@email.com[/email]

显示结果为:you-email-address@email.com

插件下载:Antispambot ShortCode

自动隐藏邮件地址

当然,如果你不想使用 shortcode,而想直接在日志中输入的邮件地址也能防止被机器收集,可以使用提供的代码自动隐藏邮件地址防止垃圾邮件。

下面的代码通过正则提取内容中的邮件地址,然后使用 WordPress 的 antispambot 函数隐藏 email 地址,同样将代码复制到当前主题的 functions.php 文件中即可。

add_filter( 'the_content', 'wpjam_hide_emails', 99 );
add_filter( 'widget_text', 'wpjam_hide_emails', 99 );
function wpjam_hide_emails($content) {
	$pattern = '/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})/i';
	return preg_replace_callback($pattern, "wpjam_hide_emails_callback", $content);
}
function wpjam_hide_emails_callback($match) {
	return antispambot($match[1]);
}

原文链接:WordPress 技巧:防止博客内容中的 Email 地址被收集

未经允许不得转载:欲思博客 » WordPress教程:防止网站内容中的 Email 地址被收集
喜欢(0) 打赏

评论3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #3
    有用,已经转走了 :mrgreen:
    老余博客2019-01-22 9:11:33回复
  2. #2
    很有用,转走了
    艾博2015-01-09 0:40:19回复
  3. #1
    😎 不怕!
    灰常记忆2014-08-23 16:52:30回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

在线客服

在线客服

  • 扫描二维码,微信联系 扫描二维码,微信联系