X

Redireccionar las páginas de adjuntos en WordPress

Todos los archivos que subes usando la galería multimedia, adicional al archivo físico que se guarda en la carpeta wp-content/uploads, también se guarda un registro en la base de datos, es decir el adjunto es tratado como un Custom Post Type llamado attachment.

 

Generalidades

Los adjuntos al ser tratados como Custom Post Type, generan por defecto una url que puede ser visualizada en el front-end del sitio.

Si consultas alguna imagen desde el menú de medios del backend de tu WordPress, verás que aparece un enlace, tal como se muestra a continuación:

 

La url generada tendrá la siguiente forma:

http://midominio.com/mi-imagen/

Si la imagen esta asociada a una entrada (como imagen destacada), por ejemplo con la entrada Hola Mundo, entonces la url generada tendrá la siguiente forma:

http://midominio.com/hola-mundo/mi-imagen/

Si accedes a este enlace verás que puedes ver la imagen como si fuese una entrada en el front-end de tu sitio:

 

Redireccionando la página de adjuntos por código

Estas urls de páginas para cada imagen adjunta en la mayoría de los casos no serán necesarias, especialmente si estas optimizando el SEO de tu sitio, por lo que puedes evaluar redireccionar estas urls, puedes usar el siguiente código:


add_action( 'template_redirect', 'dcms_redirect_attachment_page' );

function dcms_redirect_attachment_page() {
	if ( is_attachment() ) {
		global $post;
		if ( $post && $post->post_parent ) {
			wp_redirect( esc_url( get_permalink( $post->post_parent ) ), 301 );
			exit;
		} else {
			wp_redirect( esc_url( home_url( '/' ) ), 301 );
			exit;
		}
	}
}

Puedes añadir este código al final de tu archivo functions.php de tu child-theme

En el código anterior:

  • Usamos el hook template_redirect que hace referencia a la función dcms_redirect_attachment_page
  • Dentro de la función comprobamos si lo que se mostrará es un attachment
  • Si lo es comprobamos si el attachment esta asociado a alguna entrada, de ser así redireccionamos a la entrada
  • Si no esta relacionado a una entrada redirigimos al home del sitio
  • En cada redirección es necesario terminar con exit

 

La redirección también podría hacerse con un código similar en el archivo attachment.php del theme, según la Jerarquía de archivos de un theme WordPress.

 

¿Usas el plugin Yoast SEO?

Si tienes el plugin de Yoast SEO, no será necesario hacer esto por código, por defecto Yoast SEO ya hace la redirección. Lo puedes comprobar desde: SEO > Apariencia en el buscador > Medios > Redirigir las URL de adjuntos a los propios adjuntos.

 

Conclusión

Las urls que se generan por las páginas de adjuntos pueden ser innecesarias para tu sitio Web, hemos visto que puedes redirigir estas urls de manera simple a través de código, o si ya usas el plugin Yoast SEO asegurarte de que la configuración de redirección de urls de adjuntos se encuentre activa.

 

Categorías: Core
Etiquetas: imagenmejoras

Ver comentarios (7)

  • muy buenas tardes muy util no lo sabia!!! y ademas en la caja de comentarios me aparecieron muchos spam estoy borrandolos en este momento imagino que con ese redireccionamiento no podran colocar mas comentarios no deseados

    • Hola, si los comentarios son en las páginas de adjuntos, simplemente ya no será accesible estas páginas.

  • una pregunta sobre el codigo, e visto que el plugin WPcode te da un codigo que : Comprueba si el post esta en trash o no y segundo te colocar el safe_redirect y no el redirec simplemente, para este caso puntual sigues recomendando usar el redirect simplemente ? Gracias soy sub