Fraud Blocker
¿Quieres abrir los enlaces de comentarios en una nueva ventana?

¿Quieres abrir los enlaces de comentarios en una nueva ventana?

Seguro que alguna vez lo has pensado. ¿Cómo podría conseguir abrir los enlaces de comentarios en una nueva ventana?

Y eso mismo pensó mi amiga Laura, del blog caoscero.com (un blog imperdible, si quieres poner orden en el caos de tu negocio).

Por supuesto, cuando se le ocurre alguna mejora para su blog ¿a qué mejor casa va a ir a preguntar que a la mía?

Así que se vino «pa’ca» y me pegó un silbido: » Niño, ¿y esto cómo se hace?».

Pues nada que me guste más que un buen reto. Así que me puse a investigar, cómo hacerlo de forma sencilla, teniendo en cuenta además que usa Genesis Framework. Y que desde luego podría ser buena idea añadir un atributo para que los enlaces de los comentarios de WordPress de autores, se abrieran en una nueva pestaña o ventana, y así no perder la visita en tu web.

Buscando en Google (para qué inventar la rueda si lo mismo ya esta inventada), encontré este código para añadir a tu fichero functions.php:

function comment_links_in_new_tab($text) {
$return = str_replace('<a', '<a target="_blank"', $text);
return $return;
}
add_filter('get_comment_author_link', 'comment_links_in_new_tab');
add_filter('comment_text', 'comment_links_in_new_tab');

Pero me pasaron varias cosas:

  1. No me gusta que se use la función php str_replace, pues al final es una especie de buscar y reemplazar, que busca una cadena de texto y la sustituye por otra, y consume muchos recursos.
  2. No me funcionó en Genesis Framework.

Por lo demás la veo bien hecha, y pienso que en un tema diferente a Genesis Framework podría funcionar.

También encontre un plugin,WP Open Comment Links in New Window, que soluciona el problema de abrir los comentarios de WordPress en una nueva ventana, pero añadiendo un plugin más a nuestra lista, y un javascript añadido.

De nuevo, más recursos.

Una solución que no me gusta un pelo.

Abrir los enlaces de comentarios en una nueva ventana para Genesis Framework

La solución definitiva para mí.

Lógicamente usando los «Action_hooks» y «Filter_hooks» de Genesis.

¿Recuerdas que te contaba que son esos «ganchos» que nos permiten insertar funciones personalizadas en nuestro Child Theme?

Pues resulta que hay un filter, asociado a al enlace del autor de un comentario, y que podemos usar para conseguir lo que queremos.

Así que simplemente añade estas lineas al functions.php de tu Child Theme (recuerda, solamente los basados en Genesis Framework):

//* Open comment author site in new window
add_filter( 'genesis_attr_comment-author-link', 'gd_comment_author_link_attr' );
function gd_comment_author_link_attr( $attributes ) {
  $attributes['target'] = '_blank';
  
  return $attributes;
}

Y voilà!

Funciona.

Pero nos falta una pequeña parte, que es conseguir que los enlaces que dejan los comentaristas en en esos comentarios, también se abran en una nueva ventana.

Para eso, añade al final del functions.php, además este código:

function rt_add_link_target( $content ){
	// use the <a> tag to split into segments
	$bits = explode( '<a ', $content );
	// loop though the segments
	foreach( $bits as $key=>$bit ){
		// find the end of each link
		$pos = strpos( $bit, '>' );
		// check if there is an end (only fails with malformed markup)
		if( $pos !== false ){
			// get a string with just the link's attibutes
			$part = substr( $bit, 0, $pos );
			// for comparison, get the current site/network url
			$siteurl = network_site_url();
			// if the site url is in the attributes, assume it's in the href and skip, also if a target is present
			if( strpos( $part, $siteurl ) === false && strpos( $part, 'target=' ) === false ){
				// add the target attribute
				$bits[$key] = 'target="_blank" ' . $bits[$key];
			}
		}
	}
	// re-assemble the content, and return it
	return implode( '<a ', $bits );
}
add_filter( 'comment_text', 'rt_add_link_target' );

Pruébalo en este mismo blog. Deja tu comentario, y haz clic en tu nombre para ver como tu web se abre en una nueva ventana.

EN ESTE ARTÍCULO:
    Add a header to begin generating the table of contents

    Conoce a Javier Gobea

    Ayudo a negocios unipersonales a tener una escuela online propia, flexible y 100% bajo tu control para que puedan dedicarse a lo realmente importante: ayudar a tus alumnos.

    webinar-vfo (1)

    ¿Quieres comprobar la fragilidad de tu negocio?

    Responde 20 preguntas Sí/NO y descubre cuáles son los fallos más comunes que te hacen perder clientes, autoridad y reputación.

    Necesitas conocer los riesgos técnicos de tu web.

    En 2 minutos, recibirás un plan personalizado para saber qué está fallando y cómo resolverlo.

    Comparte este artículo

    NO DEJES DE LEER...

    Scroll al inicio