Metaetiqueta "robots" en WordPress

La metaetiqueta «robots» sirve para dar instrucciones a los buscadores en relación al rastreo e indexación de nuestras páginas web. Se inserta entre las etiquetas <head> y </head>. Un ejemplo muy común sería el siguiente:

<meta name="robots" content="index, follow">

Además de las clásicas «index» y «follow», existen más directivas de indexación que podéis consultar en el documento Especificaciones de la metaetiqueta "robots" y los elementos "data-nosnippet" y "X-Robots-Tag". Como podéis comprobar, las dos directivas que mencionábamos no aparecen ya que los buscadores las toman por defecto salvo que se indique lo contrario.

Metaetiqueta robots en WordPressHasta ahora, se podía añadir esta metaetiqueta de las siguientes formas:

  1. Que la añadiera el tema (muy poco habitual).
  2. Que la añadiera algún plugin de SEO.
  3. De forma manual, editando el archivo header.php y añadiendola directamente.
  4. Mediante la función wp_head.

Con la versión 5.7 de WordPress tenemos una nueva opción —y un problema— ya que se ha añadido una nueva API, la cual generará de forma automática dicha metaetiqueta y añadiendo la directiva «max-image-preview» con el valor «large»:

<meta name="robots" content="max-image-preview:large" />

¿Por qué es un problema? Porque la añade sin importar si ya estaba declarada esa metaetiqueta y por tanto duplicándola en caso de tenerla.

La primera solución es sencilla: desactivar esta función. Para ello, añadimos en el archivo «functions.php» del tema o en nuestro plugin personal la siguiente línea:

remove_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );

Ahora bien, si en un futuro la API de WP añadiera más directivas, volveríamos a tener el mismo problema ya que el filtro parece que solo afecta a una en concreto («max-image-preview:large») y no al filtro en su conjunto.

La segunda solución sería aprovechar la nueva API y personalizar a nuestro gusto la metaetiqueta. Si en el futuro WordPress añadiera más directivas, éstas simplemente se sumarían a las existentes. En caso de estar ya declaradas, tomarían el valor que nosotros ya les hubiéramos dado. Para ello, editamos el archivo functions.php del tema activo o nuestro plugin personal y añadimos lo siguiente:

function directivas_wp_robots( $robots ) {
    $robots['directiva'] = true; //para añadir directiva que NO admita valores
    $robots['directiva'] = 'valor directiva'; //añadir directiva que admita valores. Sobrescribe cualquier valor que WordPress haya establecido de forma automática para la directiva.
    unset( $robots['directiva'] ); //para remover directiva con independencia de valor que tenga
    return $robots;
}
add_filter( 'wp_robots', 'directivas_wp_robots' );

Donde directiva y valor directiva deben sustituirse por su valor correspondiente (una línea por cada una que queramos añadir o eliminar). También podemos usar etiquetas condicionales.

Nota: Se podría usar $robots['directiva:valor'] = true;, pero esta opción no es aconsejable ya que no sobrescribe la directiva que añade WordPress sino que la añade.

Como es lógico, antes de aplicar este código debemos asegurarnos que ni el tema ni ningún otro plugin añada la metaetiqueta «robots».

Veamos un ejemplo en el que, por un lado, añadimos las directivas «index» y «follow» a todas nuestras páginas y por otro quitamos «max-image-preview» de los archivos de categorías. Además, hemos cambiado el valor de la directiva que añade de forma automática WordPress («max-image-preview» ha pasado de ser «large» a «standard»)

function directivas_wp_robots( $robots ) {
   $robots['follow'] = true;
   $robots['index'] = true;
   $robots['max-image-preview'] = 'standard';
   if (is_category()) :
	unset( $robots['max-image-preview'] ); 
   endif;
   return $robots;
}
add_filter( 'wp_robots', 'directivas_wp_robots' );

Deja una respuesta

Tu dirección de correo electrónico no será publicada.