Antispambot Shortcode

Insertar direcciones de e-mail en texto plano por lo general no es muy buena idea, pero hay ocasiones en las que por uno u otro motivo tenemos que insertar un correo electrónico de contacto en el cuerpo de un post o una página.

Hace mucho tiempo que WordPress incluye una útil función que, si bien no es una protección al 100%, otorga una buena posibilidad de evitar que tu bandeja de entrada se llene de basura. Como por lo general no podemos ejecutar código PHP en el cuerpo de una entrada, me pareció una buena idea crear un simple shortcode para tenerla más a mano.

Para usarla puedes copiar este código en el archivo functions.php de tu tema, o bien descargarla desde GitHub, guardarla en tu carpeta de plugins y luego activarlo.

<?php
/*
Plugin Name: Antispambot Shortcode
Plugin URI: http://gist.github.com/371875
Description: A simple plugin to use WordPress' antispambot() function in posts and pages
Version: 1.0
Author: Felipe Lavín Z.
Author URI: http://www.yukei.net
*/

function antispambot_sc($atts, $content = ''){
	extract(shortcode_atts(array(
		'email' => '',
		'link' => ''
		), $atts));
	if ( empty($link) ) {
		$out = '<a href="mailto:'. antispambot($email) .'">'. antispambot($email) .'</a>';
	} else {
		$out = '<a href="mailto:'. antispambot($email) .'">'. $link .'</a>';
	}
	return $out;
}

add_shortcode('antispambot', 'antispambot_sc');
?>

La utilización, como cualquier shortcode, es bastante sencilla:

  1. Para enlazar a una dirección de mail, y que el mismo e-mail sea el texto del enlace, debes usar [antispambot email="tumail@correo.com"]
  2. Para enlazar a una dirección de mail, y utilizar otro texto como enlace, debes usar [antispambot email="tumail@correo.com" link="escríbeme a mi correo"]

Algo sencillo, pero (espero) útil