sokai.name Potsdam bloggt (wieder)

Mailadressen in WordPress schützen

4. Februar 2009

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.

Kurzlink: http://ma.ximi.se/h