Hoy vemos cómo cambiar el directorio de la Biblioteca multimedia de WordPress y migrar todo el contenido sin que las imágenes ya existentes den error.
Ya hemos hablado largo y tendido de la librería multimedia de WordPress y de cómo mejorar la librería multimedia de WordPress. Hoy vamos a ir un paso más allá, y veremos cómo "moverla" del directorio en la que WordPress nos la coloca por defecto.
Si es una instalación nueva de WordPress
Empecemos por lo fácil. En el caso que sea una instalación nueva de WordPress, el proceso es muy simple, y de echo ya lo habíamos comentado en el tutorial 5 cosas a modificar después de instalar WordPress.
Para empezar iremos a "Ajustes > Medios" y desactivaremos la opción de organizar las imágenes por carpetas basándonos en años y meses:

No es recomendable organizar la galería multimedia en carpetas de años y meses
Esto es bastante recomendable, ya que si lo dejamos así, todos los archivos e imágenes que subamos van a quedar esparcidas (lo que WordPress llama "organizar") entre varios directorios del estilo:
- web.com/wp-content/uploads/2015/01 (enero 2015)
- web.com/wp-content/uploads/2013/12 (diciembre 2013).
La verdad es que no lo veo muy cómodo para luego encontrar algo entre tantos directorios, pues difícilmente vamos a acordarnos de que día colgamos una imagen. Así pues, menos es más.
Pero ahí no queda la cosa. Ya hemos eliminado los subdirectorios de fecha, pero ahora vamos a modificar la ruta /wp-content/uploads/ y la sustituiremos por la que queramos. Para hacer eso simplemente tenemos que editar el archivo wp-config.php y colocar la siguiente línea:
-
define( 'UPLOADS', ''.'contenido' );
Dónde "contenido" será el nuevo nombre de carpeta en el que a partir de ahora se guardarán todas la imagenes (y media en general). Así pues, si lo hemos hecho bien, ahora la carpeta tendrá una URL parecida a esta:
-
web.com/contenido/
En cuanto a la edición del archivo "wp-config.php" no os preocupéis si luego actualizáis WordPress, pues no se perderán las modificaciones, ya que es un archivo que no se actualiza nunca.
Bien, hasta ahí lo "fácil", por así decirlo. Si vuestra instalación es nueva, no tenéis que hacer nada más. Pero si ya tenéis una web con contenido e imágenes, ahora viene la parte más compleja. Migrar todo ese contenido.
Si es una instalación ya existente de WordPress
El principal problema con el que nos vamos a encontrar es muy fácil de entender. Si hemos trabajado durante un tiempo con otro directorio, WordPress buscará las imágenes en el nuevo directorio pero nuestras imágenes seguirán estando en la antigua, con lo que en la librería multimedia no veremos nada. Ojo, las nuevas imágenes que subamos sí que aparecerán, pero las que ya existían no.

Esto es lo que veremos si modificamos el directorio en una instalación ya existente
Así pues, deberemos solucionar esto en dos pasos. El primero será mover todas las imágenes al nuevo directorio por FTP. ¿Cómo haremos tal cosa? Simplemente arrastrando el contenido del directorio /uploads/ al recién creado directorio /contenido/ (o lo que hayáis elegido). Con eso WordPress ya será capaz de localizarlas, pues es justamente ahí donde las va a buscar.

WordPress ya puede localizar las imagenes antiguas
En principio podría parecer que ya está todo listo, pero no es así. Aún nos falta un último detalle, ya que si bien es cierto que en la biblioteca multimedia todo aparece bien, no será así en los posts, páginas y contenido de nuestra web, ya que a diferencia de la biblioteca, las URLs de las imágenes que ya existían no se han actualizado automáticamente. Así pues, tendremos que modificarlas una a una. Sí, sí... así, como suena! Pero ningún problema, podemos hacerlo de forma "automática".
Lo primero que tendremos que hacer es instalar y activar el plugin "Better Search Replace" que es el que nos permitirá modificar todas las URLs de golpe. A continuación iremos a "Herramientas > Better Search Replace" y rellenaremos las opciones de la siguiente forma:

Tenemos que vigilar muchísimo cuando rellenemos estas opciones
Repasemos ahora los datos que debemos marcar:
- En la primera casilla le diremos la parte de la URL antigua, que aún está en algunos posts y que queremos reemplazar.
- En la segunda casilla, pondremos la nueva, en este caso la de "contenido", pero cada uno deberá poner la suya.
- En el tercer apartado, nos aseguraremos de seleccionar todas las tablas, ya que aquí le estamos diciendo en que tablas de WordPress queremos que haga este "reemplazar".
- En la cuarta casilla podemos seleccionar si queremos que nos detecte y diferencia las mayúsculas y minúsculas. En principio vamos a dejarlo así, pues no nos afecta.
- La quinta columna la dejaremos también desactivada, ya que en este caso no queremos sustituir los GUIDs. Si queréis más información sobre este punto, lo tenéix en el códex.
- Y finalmente, la última opción, que nos permite ejecutar "en seco". Esto quiere decir que no realizará el "buscar y remplazar", sino que sólo nos indicará lo que pasaría si lo hiciéramos. Está totalmente recomendado hacer primero la prueba en seco, para asegurarnos que la sustitución que vamos a hacer no la lía parda.
Así pues, ponemos un cirio, le damos al botoncillo de "Run Search/Replace" y vemos que ha pasado. En este caso, al ser un Dry Run nos dirá lo siguiente:

El plugin nos dice lo que ocurrirá si se realiza el "reemplazar"
En este caso dice que de las 57 tablas, hay dos celdas en las que se modificaría ese valor. Si le damos a "Click here" veríamos que tablas son. Así pues, deberemos comprobar que todo está correcto, y si es así, ejecutaremos de nuevo esa acción, pero desactivando la opción "en seco". Evidentemente, el mensaje será el siguiente:

Ahora sí, ya se han efectuado los cambios.
¡Y ya está! Hemos acabado y todo debería estar funcionando perfectamente. Nuestras imagenes deberían estar en su nuevo emplazamiento, WordPress las debería estar detectando, y en la web no debería haber ningún fallo. ¡Felicidades!
En fin, pues esto es todo. Ya sabéis que si tenéis cualquier duda o pregunta, podéis suscribiros para tener acceso tanto al soporte técnico como a todos los cursos de marketing online y de desarrollo web :)