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:

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
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
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.
Comentarios