SummArg | Cursos y recursos para webmasters

19/03/2012

Añadir target=”_blank” a todos los links externos vía functions.php

WordPress ofrece en su editor la opción de indicar al enlace que se abra en una nueva pestaña/ventana sin necesidad de introducir código manualmente. Pero en un sitio con varios autores o con contenido viejo que no deseamos tener que editar puede suceder que tengamos una gran cantidad de links hacia otros websites sin el target=”_blank” y necesitemos que se añada automáticamente.

Una solución es hacerlo desde el functions.php del theme.

function autoblank($text) {
 $return = str_replace('<a href=', '<a target="_blank" href =', $text);
 $return = str_replace('<a target="_blank" href="http://domain.com', '<a href="http://domain.com', $return);
 $return = str_replace('<a target="_blank" href="#', '<a href="#', $return);
 $return = str_replace(' target="_blank">', '>', $return);
 return $return;
 }
 add_filter('the_content', 'autoblank');
 add_filter('comment_text', 'autoblank');

Esta función que creamos se añade como filtro a the_content() y comment_text(), con lo que todos los links que estén en el contenido que se obtiene de estas funciones pasarán por nuestro filtro que reemplaza la cadena de texto “<a href=” por “<a target=”_blank” href=””. En las dos líneas siguientes se fija si el lin se dirige a determinado dominio (debemos colocar ahí el nuestro) o si va a un ancla dentro de la misma página y procede a eliminar el target=”_blank”. En la siguiente línea elimina el target=”_blank” que se añade desde el editor y cierra la etiqueta.

Recuerden editar domain.com por el dominio que corresponda y modificará todos los links hacia otros dominios haciendo que se abran en una nueva ventana.

Visto en codegrad

Dejar un comentario

  1. Gracias por este código, lo estaba necesitando mucho, ya lo añadi a mi directorio de artículos y funciono muy bien, abrir enlaces externos en una nueva ventana ayuda mucho a aumentar el tiempo de estancia de los usuarios en un sitio web, aunque claro, siempre y cuando tengas contenido de calidad en el mismo.

    Saludos.

  2. de lujo. buen tutorial bien explicado gracias

Dejar un comentario