Cuanto trasladé este sitio de WordPress a Ghost durante el verano pasado, utilicé la herramienta que han desarrollado los de Ghost para exportar las entradas de WordPress para Ghost.

Este proceso ayuda mucho para importar las entradas, pero hay datos como el autor del artículo que no es mismo. Este Plugin de WordPress lo que genera es un segundo usuario y asocia todas las entradas con ese usuario. Por lo que el usuario principal de Ghost que utilizo no tenía esas entradas.

Se pueden editar todas las entradas una a una y modificar el autor, pero cuando tienes más de 300 artículos, repetir ese proceso da casi vértigo. Así que lo que pensé es meterle mano a la base de datos y hacer el cambio directamente así.

Por entonces, la base de datos que tenía el blog era SQLite, por lo que este tutorial solo funcionará si usas SQLite. Luego más tarde, hice el cambio de SQLite a MySQL y tenéis este otro tutorial para hacerlo:

Migrar un Ghost de SQLite a MySQL/MariaDB
Desde la nueva versión de Ghost 5.x recomiendan el uso de MySQL 8.x o MariaDB 10.3. Si estabas usando Ghost 4.x seguramente estés funcionando con SQLite. En el tutorial de hoy os explicaremos como migrar el contenido de un Ghost con SQLite a un Ghost con MySQL/MariaDB.
💀
Si decides seguir mis instrucciones, ten en cuenta que deberás de tocar la base de datos, por lo tanto deberás de ser responsable y tener tus propios backups por si algo no saliera bien. De esta forma, no me hago responsable de cualquier pérdida de datos :D

Instalar SQLite en tu ordenador

Lo primero será comprobar que tenemos en nuestro ordenador instalado SQLite para gestionar la base de datos. Recomiendo hacerlo directamente en nuestro ordenador en vez del servidor.

apt update
apt install -y sqlite3

Crea una copia de seguridad

Si en tu proveedor dispones de la opción de crear un snapshot o instantánea del servidor, es recomendado hacerlo, de esta forma, si algo sale mal será más rápido volver atrás.

De todas formas, realizaremos una copia manual en el servidor. Para ello nos iremos a la ruta donde está instalado y en content/data tendremos el fichero con nuestra base de datos:

cp ghost.db ghostdb-backup2021-10-11
📢
El nombre de la base de datos es posible que pueda variar, si no habéis modificado nada de esto en el fichero de configuración de Ghost seguramente será ghost.db, pero si has decidido modificar el nombre, tenlo presente en los siguientes comandos.

Actualizando el autor de los artículos

Una vez tenemos copia de seguridad, nos descargamos el fichero ghost.db a nuestro ordenador y ejecutamos lo siguiente para editarlo por línea de comandos:

sqlite3 ghost.db

Lo primero que tendremos que averiguar, es el author_id de los autores que tengas disponibles en tu instalación de Ghost. Para hacer esto, tendremos que ejecutar la siguiente línea:

SELECT id, name, slug FROM users;

Esto debería de dar una resultado similar a este:

1|Don T3rr0r|don
5951f5fca366XXXXXXXXXXXX|Ghost|ghost
615f41ffaf14XXXXXXXXXXXX|zagur|zagur
📢
Ten presente que los ID de los autores serán diferentes ya que se generan de forma aleatoria para cada instalación de Ghost.

A partir de aquí, podemos determinar que usuario es el usuario con el que se han importado las entradas. Aún así, recomiendo revisar algún artículo importado para revisar que autor tiene configurado y cual es el slug del autor configurado.

Por ejemplo, en mi caso se importaron todas las entradas bajo el usuario "zagur", que es el último usuario que aparece.

Por lo tanto, el author_id de WordPress es 615f41ffaf14XXXXXXXXXXXX y queremos que los artículos que tengan ese author_id sea el 1, que es el usuario que tengo creado para mi Ghost.

Para eso ejecutaremos esta consulta para actualizar nuestra base de datos:

UPDATE posts SET author_id = REPLACE(author_id,'615f41ffaf14XXXXXXXXXXXX','1');

Y después de esta consulta, ejecutaremos esta también:

UPDATE posts_authors SET author_id = REPLACE(author_id,'615f41ffaf14XXXXXXXXXXXX','1');

Esto actualizará las propias entradas para que sean del usuario correcto y luego actualizará la página de "autores" para que apunte al usuario correcto.

Para salir de SQLite:

.quit

Importar la base de datos actualizada

Una vez realizado el cambio, podemos subir de nuevo el fichero a nuestro servidor y substituirlo por el que tenemos en content/data/.

Si todo ha ido bien, deberías de poder ir a la página de autor de WordPress y en esta página debería de aparecer "0 resultados".

Y por lo contrario, si vas a tu usuario actual, deberían de aparecer todos los artículos.

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación