viernes, 8 de noviembre de 2013

Hoy en AyudaWordPress.com

Hoy en AyudaWordPress.com

Link to Ayuda WordPress

Autoenlazar URLs

Posted: 08 Nov 2013 11:13 AM PST

url clicable

WordPress tiene la fea buena costumbre de que si pones una URL en el contenido de una entrada o comentario aparece como texto plano, no se convierte automáticamente en un enlace, no sale “manita” al pasar el cursor por encima vamos.

Esto es así, principalmente, para evitar el spam en comentarios, pero también viene inactivo por defecto para el contenido de tus entradas y páginas. O sea, que poner una url así en el contenido: http://ayudawordpress.com no la convierte automáticamente en esto otro http://ayudawordpress.com.

Hay una función, incluída en el fichero /wp-includes/formatting.php, denominada make_clicable, que viene inactiva por defecto.
make_clickable wordpress

Por supuesto, puedes activarla modificando el archivo pero ya sabrás que eso nunca es recomendable, pues en cada actualización (y recuerda que ahora son automáticas) perderías la personalización.

Así que, si queremos que las URLs sean activas y no texto plano tenemos que hacerlo de otro modo … 

… Autoenlazar URLs con plugin …

Hay un plugin ya veterano que hace exactamente esto, que toda URL que aparezca en el contenido, por defecto, se convierta en un hiperenlace, que sea “clicable“. Lo mejor de todo es que dispone de una página de ajustes que nos permite controlar bastantes aspectos de esta funcionalidad, como si queremos que las URLs enlazadas abran siempre en nueva ventana o si también queremos que las URLs sean enlaces en los comentarios … o no.

auto enlazar urls wordpress plugin

Solo tienes que instalar Auto-hyperlink URLs, configurarlo a tu gusto y ya lo tienes.

… Autoenlazar URLs mediante función …

Por otro lado, también puedes añadir una función a tu plugin de personalizaciones para conseguir lo mismo, esta:

//Autoenlazar URLs  function _make_url_clickable_cb($matches) {  	$ret = '';  	$url = $matches[2];     	if ( empty($url) )  		return $matches[0];  	// quita lo que sobra [.,;:] de la URL  	if ( in_array(substr($url, -1), array('.', ',', ';', ':')) === true ) {  		$ret = substr($url, -1);  		$url = substr($url, 0, strlen($url)-1);  	}  	return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $ret;  }     function _make_web_ftp_clickable_cb($matches) {  	$ret = '';  	$dest = $matches[2];  	$dest = 'http://' . $dest;     	if ( empty($dest) )  		return $matches[0];  	// removed trailing [,;:] from URL  	if ( in_array(substr($dest, -1), array('.', ',', ';', ':')) === true ) {  		$ret = substr($dest, -1);  		$dest = substr($dest, 0, strlen($dest)-1);  	}  	return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>" . $ret;  }     function _make_email_clickable_cb($matches) {  	$email = $matches[2] . '@' . $matches[3];  	return $matches[1] . "<a href=\"mailto:$email\">$email</a>";  }     function make_clickable($ret) {  	$ret = ' ' . $ret;  	// aquí se usan arras para mayor velocidad  	$ret = preg_replace_callback('#([\s>])([\w]+?://[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', '_make_url_clickable_cb', $ret);  	$ret = preg_replace_callback('#([\s>])((www|ftp)\.[\w\\x80-\\xff\#$%&~/.\-;:=,?@\[\]+]*)#is', '_make_web_ftp_clickable_cb', $ret);  	$ret = preg_replace_callback('#([\s>])([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})#i', '_make_email_clickable_cb', $ret);     	// aquí no hay array para que se ejecute al final, para limpiar enlaces accidentales  	$ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);  	$ret = trim($ret);  	return $ret;  }

Guardas los cambios y ya lo tienes.

No hay comentarios:

Publicar un comentario

Seguidores

Archivo del blog