Schon seit einiger Zeit bin ich auf der Suche nach einer ‚einfachen‘ Möglichkeit, Klartext E-Mail-Adressen auf WP-Seiten (bspw. im Impressum) oder in WP-Artikeln ‚einfach‘ zu verschlüsseln, bzw. unkenntlich zu machen, um SPAM (halbwegs vernünftig) zu vermeiden.
Nachdem ich dann einige Plugins wie bspw. EmailShroud, Transpose Email und Obfuscate-Email ausprobiert hatte und mit allen nicht so ganz zufrieden war, bin ich vor ein paar Tagen durch einen Artikel bei dynamicinternet auf die WP-eigene Funktion antispambot() gestolpert.
Diese ‚verschleiert‘ die darzustellende (und ihr übergebene) Mail-Adresse in zufälliger Form und hat somit schon die Hälte der Funktionalität, die ich erwarte. Nur einen „mailto:“-Link bastelt sie nicht und es muss leider auch für die Benutzung der reine PHP-Quelltext im WP-Content benutzt werden, was ein Plugin, wie bspw. Exec-PHP, voraussetzt.
So viel Kuddelmuddel und Aufstand wegen so einer einfachen Sache, wie dem Absichern einer Mail-Adresse? – Es geht auch einfacher…!
Wie heute schön beim Smashing Magazine im Artikel „Mastering WordPress Shortcodes“ zu lesen war, ist es ultra-einfach einen kleinen und funktionierenden Shortcode in seinem verwendeten Theme einzubinden.
Und hier ist nun mein Code-Schnipsel für obiges ‚Obfuskieren‘:
/* WP-Shortcode: obfuscate (secure) email by http://sokai.name */
function SecureMail($atts, $content = null) {
extract(shortcode_atts(array(
"mailto" => 'mailto:'
), $atts));
$asb = antispambot($content);
$mailto2 = antispambot($mailto);
return '<a href="mailto:'.$mailto2.'">'.$asb.'</a>';
}
add_shortcode('sm', 'SecureMail');
Diesen einfach, bspw. am Ende, der functions.php im Themeverzeichnis anfügen und mittels folgenden Shortcodes im WP-Content benutzen:
[sm mailto="bla@blubbbb.com"]bla@blubbbb.com[/sm]
Die Ausgabe ist dann wie folgt:
[sm mailto=“bla@blubbbb.com“]bla@blubbbb.com[/sm]
So viel noch auf die Schnelle… – Viel Spaß beim Ausprobieren & n8i
Update 18. Februar 2009
plus: $mailto2 = antispambot($mailto);
Denn natürlich muss auch die mailto-Adresse ‚verschleiert‘ werden, was in der Originalversion dieses Artikels (und des obigen Code-Blocks) nicht der Fall war.