{"id":1015,"date":"2011-12-14T12:37:41","date_gmt":"2011-12-14T11:37:41","guid":{"rendered":"http:\/\/annunaki.nl\/lifehack\/?p=1015"},"modified":"2016-07-18T17:00:46","modified_gmt":"2016-07-18T16:00:46","slug":"wordpress-email-cloak-script-in-theme","status":"publish","type":"post","link":"https:\/\/annunaki.nl\/lifehack\/programmeren\/wordpress-email-cloak-script-in-theme\/","title":{"rendered":"WordPress email cloak script in theme"},"content":{"rendered":"<p>Ben je bezig met de ontwikkeling van een WordPress website en wil je graag een manier om de emailadressen automatisch te cloaken, oftewel om te vormen zodat deze niet uitgelezen kunnen worden door spambots? Dan heb ik hier een oplossing voor je. Voeg onderstaande code toe in de functions.php van het theme dat je gebruikt en de emailadressen op je website zullen voortaan automatisch aangepast worden naar een javascript die niet uitgelezen kunnen worden door spambots.<\/p>\n<p><!--more-->Het script is wellicht verre van geoptimaliseerd, maar het werkt voor mij. Heb jij een betere versie? Laat het mij dan weten in de reacties.<\/p>\n<blockquote>\n<pre>add_filter('the_content', 'email_cloak_filter');\r\nfunction email_cloak_filter($text) {\r\n\t\/\/ replace mailto links\r\n\t$res1 = preg_match_all(\r\n\t\t\"\/&lt;a href=[\\\"|\\']mailto:[a-z0-9]+([_\\\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\\\.[a-z]{2,}\/i\",\r\n\t\t$text,\r\n\t\t$matches1\r\n\t);\r\n\tif($res1) {\r\n\t\tforeach(array_unique($matches1[0]) as $expr) {\r\n\t\t\t$pos1 = strpos($text,$expr);\r\n\t\t\t$pos2 = strpos($text,\"&lt;\/a&gt;\",$pos1);\r\n\t\t\t$mymatche1 = substr($text,$pos1,($pos2-$pos1+4));\r\n\t\t\t$res = preg_match_all(\r\n\t\t\t\t\"\/[a-z0-9]+([_\\\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\\\.[a-z]{2,}\/i\",\r\n\t\t\t\t$expr,\r\n\t\t\t\t$matches3\r\n\t\t\t);\r\n\t\t\t$staart = strpos($matches3[0][0],\"@\");\r\n\t\t\t$to = substr($matches3[0][0],0,strpos($matches3[0][0],\"@\"));\r\n\t\t\t$domain = substr($matches3[0][0],strpos($matches3[0][0],\"@\")+1,strlen($matches3[0][0]));\r\n\t\t\t$company = substr($domain,0,strpos($domain,\".\"));\r\n\t\t\t$tld = substr($domain,strpos($domain,\".\")+1,strlen($domain));\r\n\t\t\t$replacement = '&lt;script language=\"javascript\"&gt;'.\"\\n\".\r\n\t\t\t\t\t'&lt;!--'.\"\\n\".\r\n\t\t\t\t\t'var party1 = \"'.$to.'\";'.\"\\n\".\r\n\t\t\t\t\t'var part2 = \"'.$company.'\";'.\"\\n\".\r\n\t\t\t\t\t'var par3 = \"'.$tld.'\";'.\"\\n\".\r\n\t\t\t\t\t'document.write(\\'&lt;a class=\"maillink\" href=\"&amp;#109;a&amp;#105;\\' + \\'l&amp;#116;o:\\' + party1 + \\'&amp;#64;\\' + part2 + \\'.\\' + par3 + \\'\"&gt;\\');'.\"\\n\".\r\n\t\t\t\t\t'document.write(party1 + \\'&amp;#64;\\' + part2 + \\'.\\' + par3 + \\'&lt;\/a&gt;\\');'.\"\\n\".\r\n\t\t\t\t\t'\/\/ --&gt;'.\"\\n\".\r\n\t\t\t\t\t'&lt;\/script&gt;';\r\n\t\t\t$text = str_replace($mymatche1,$replacement,$text);\r\n\t\t}\r\n\t}\r\n\t\/\/ replace mailto links beginning with title=\r\n\t$res2 = preg_match_all(\r\n\t\t\"\/&lt;a title=[\\\"|\\'](.*)[\\\"|\\'] href=[\\\"|\\']mailto:[a-z0-9]+([_\\\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\\\.[a-z]{2,}\/i\",\r\n\t\t$text,\r\n\t\t$matches2\r\n\t);\r\n\tif($res2) {\r\n\t\tforeach(array_unique($matches2[0]) as $expr) {\r\n\t\t\t$pos1 = strpos($text,$expr);\r\n\t\t\t$pos2 = strpos($text,\"&lt;\/a&gt;\",$pos1);\r\n\t\t\t$mymatche2 = substr($text,$pos1,($pos2-$pos1+4));\r\n\t\t\t$res = preg_match_all(\r\n\t\t\t\t\"\/[a-z0-9]+([_\\\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\\\.[a-z]{2,}\/i\",\r\n\t\t\t\t$expr,\r\n\t\t\t\t$matches4\r\n\t\t\t);\r\n\t\t\t$tstart = strpos($expr,'title=');\r\n\t\t\t$tend = strpos($expr,'\" ',$tstart);\r\n\t\t\t$title = substr($expr,$tstart+7,$tend-$tstart-7);\r\n\t\t\t$staart = strpos($matches4[0][0],\"@\");\r\n\t\t\t$to = substr($matches4[0][0],0,strpos($matches4[0][0],\"@\"));\r\n\t\t\t$domain = substr($matches4[0][0],strpos($matches4[0][0],\"@\")+1,strlen($matches4[0][0]));\r\n\t\t\t$company = substr($domain,0,strpos($domain,\".\"));\r\n\t\t\t$tld = substr($domain,strpos($domain,\".\")+1,strlen($domain));\r\n\t\t\t$replacement = '&lt;script language=\"javascript\"&gt;'.\"\\n\".\r\n\t\t\t\t\t'&lt;!--'.\"\\n\".\r\n\t\t\t\t\t'var party1 = \"'.$to.'\";'.\"\\n\".\r\n\t\t\t\t\t'var part2 = \"'.$company.'\";'.\"\\n\".\r\n\t\t\t\t\t'var par3 = \"'.$tld.'\";'.\"\\n\".\r\n\t\t\t\t\t'document.write(\\'&lt;a class=\"maillink\" title=\"'.$title.'\" href=\"&amp;#109;a&amp;#105;\\' + \\'l&amp;#116;o:\\' + party1 + \\'&amp;#64;\\' + part2 + \\'.\\' + par3 + \\'\"&gt;\\');'.\"\\n\".\r\n\t\t\t\t\t'document.write(party1 + \\'&amp;#64;\\' + part2 + \\'.\\' + par3 + \\'&lt;\/a&gt;\\');'.\"\\n\".\r\n\t\t\t\t\t'\/\/ --&gt;'.\"\\n\".\r\n\t\t\t\t\t'&lt;\/script&gt;';\r\n\t\t\t$text = str_replace($mymatche2,$replacement,$text);\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/ replace email addresses\r\n\t$res = preg_match_all(\r\n\t\t\"\/[a-z0-9]+([_\\\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\\\.[a-z]{2,}\/i\",\r\n\t\t$text,\r\n\t\t$matches\r\n\t);\r\n\tif ($res) {\r\n\t\tforeach(array_unique($matches[0]) as $email) {\r\n\t\t\t$staart = strpos($email,\"@\");\r\n\t\t\t$to = substr($email,0,strpos($email,\"@\"));\r\n\t\t\t$domain = substr($email,strpos($email,\"@\")+1,strlen($email));\r\n\t\t\t$company = substr($domain,0,strpos($domain,\".\"));\r\n\t\t\t$tld = substr($domain,strpos($domain,\".\")+1,strlen($domain));\r\n\t\t\t$replacement = '&lt;script language=\"javascript\"&gt;'.\"\\n\".\r\n\t\t\t\t\t'&lt;!--'.\"\\n\".\r\n\t\t\t\t\t'var party1 = \"'.$to.'\";'.\"\\n\".\r\n\t\t\t\t\t'var part2 = \"'.$company.'\";'.\"\\n\".\r\n\t\t\t\t\t'var par3 = \"'.$tld.'\";'.\"\\n\".\r\n\t\t\t\t\t'document.write(party1 + \\'&amp;#64;\\' + part2 + \\'.\\' + par3);'.\"\\n\".\r\n\t\t\t\t\t'\/\/ --&gt;'.\"\\n\".\r\n\t\t\t\t\t'&lt;\/script&gt;';\r\n\t\t\t$text = str_replace($email,$replacement,$text);\r\n\t\t}\r\n\t}\r\n\treturn $text;\r\n}<\/pre>\n<\/blockquote>\n<div id=\"simplesocialcontent\"><div style=\"padding-top:10px;margin-bottom:10px;font-size:10pt;font-family:arial;font-weight:bold;\">Dit artikel delen:<\/div><div class=simplesocial><a href=\"http:\/\/twitter.com\/share\" data-url=\"https:\/\/annunaki.nl\/lifehack\/programmeren\/wordpress-email-cloak-script-in-theme\/\" data-text=\"WordPress+email+cloak+script+in+theme\" class=\"twitter-share-button\" data-count=\"horizontal\">Tweet<\/a><script type=\"text\/javascript\" src=\"http:\/\/platform.twitter.com\/widgets.js\"><\/script><\/div><div class=simplesocial><iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F&layout=standard&show_faces=false&width=450&action=like&colorscheme=light&height=35\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px; height:25px;\" allowTransparency=\"true\"><\/iframe><\/div><div style=\"clear:both\"><\/div><a class=simplesocial onclick=\"return simplesocial(this,500,400)\" title=\"Share on Facebook\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/facebook.png)\" href=\"http:\/\/www.facebook.com\/share.php?u=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F&t=WordPress+email+cloak+script+in+theme\"><\/a><a class=simplesocial onclick=\"return simplesocial(this,812,420)\" title=\"Share on Twitter\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/twitter.png)\" href=\"http:\/\/twitter.com\/home?status=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F\"><\/a><a class=simplesocial onclick=\"return simplesocial(this,435,500)\" title=\"Email a Friend\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/email.png)\" href=\"http:\/\/www.freetellafriend.com\/tell\/?heading=Share+This+Article&bg=1&option=email&url=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F\"><\/a><a class=simplesocial onclick=\"return simplesocial(this,890,550)\" title=\"Share on Delicious\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/delicious.png)\" href=\"http:\/\/del.icio.us\/post?url=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F&title=WordPress+email+cloak+script+in+theme\"><\/a><a class=simplesocial onclick=\"return simplesocial(this,812,420)\" title=\"Share on Digg\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/digg.png)\" href=\"http:\/\/digg.com\/submit?url=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F&title=WordPress+email+cloak+script+in+theme\"><\/a><a class=simplesocial onclick=\"return simplesocial(this,750,500)\" title=\"Share on Google\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/google.png)\" href=\"http:\/\/www.google.com\/bookmarks\/mark?op=add&bkmk=https%3A%2F%2Fannunaki.nl%2Flifehack%2Fprogrammeren%2Fwordpress-email-cloak-script-in-theme%2F&title=WordPress+email+cloak+script+in+theme\"><\/a><a class=simplesocial title=\"RSS Feed\" style=\"background:url(http:\/\/annunaki.nl\/lifehack\/wp-content\/plugins\/simple-social-sharing-widgets-icons\/icons_32\/rss.png)\" href=\"http:\/\/annunaki.nl\/lifehack\/?feed=rss2\"><\/a><\/div><div style=\"clear:both;margin-bottom:20px\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Ben je bezig met de ontwikkeling van een WordPress website en wil je graag een manier om de emailadressen automatisch te cloaken, oftewel om te vormen zodat deze niet uitgelezen kunnen worden door spambots? Dan heb ik hier een oplossing voor je. Voeg onderstaande code toe in de functions.php van het theme dat je gebruikt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[745,4514],"tags":[10692,10681,10684,10682,73,6534,10683,6535,10694,10688,10687,10693,10685,10691,10689,10690,10723,10695,10686],"class_list":["post-1015","post","type-post","status-publish","format-standard","hentry","category-programmeren","category-wordpress","tag-anti-spam","tag-cloak","tag-cloak-script","tag-cloaking","tag-email","tag-email-cloak","tag-email-cloak-script","tag-email-cloaking","tag-emailadres-omvormen","tag-emailadressen","tag-functions-php","tag-javascript","tag-script-wordpress","tag-spam","tag-spambot","tag-spambots","tag-wordpress","tag-wordpress-cloak-script","tag-wordpress-theme"],"_links":{"self":[{"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/posts\/1015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/comments?post=1015"}],"version-history":[{"count":8,"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/posts\/1015\/revisions"}],"predecessor-version":[{"id":1030,"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/posts\/1015\/revisions\/1030"}],"wp:attachment":[{"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/media?parent=1015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/categories?post=1015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/annunaki.nl\/lifehack\/wp-json\/wp\/v2\/tags?post=1015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}