¿Podemos importar publicaciones directamente a la base de datos de WordPress?

4 minutos de lectura

Publicamos un blog diario a partir de 1998, casi antes de que se inventara la palabra “blog”. Teníamos páginas estáticas configuradas en una estructura de carpetas, pero /año/mes/fecha/índice.shtml + contenido aquí

Cambiamos a WordPress en noviembre de 2008 y ahora estamos extrayendo los archivos 1998-2008 y convirtiéndolos a JSON… con Título, Descripción, Categoría, Fecha y luego estamos usando un widget de PHP para leer el JSON, convertir a xml y cargar utilizando el cargador WP RSS. El problema es que el cargador RSS tiene muchos errores y está fallando. Sigue diciéndonos que las publicaciones ya están en la base de datos, aunque las nuevas publicaciones tienen una cadena de fecha y una cadena de contenido únicas. el archivo de carga es muy pequeño, solo 3 MB, PHP tiene mucha memoria de 120 MB y el límite de archivos de carga está establecido en 32 MB

Notamos que si uno agrega manualmente un registro a la tabla wp_posts desde el back-end, usando algo como PHPMyAdmin, funciona bien. Dado que la importación de RSS no funciona, queremos intentar cargar publicaciones antiguas de forma masiva directamente en la tabla wp_post, pero también debemos agregar la categoría. Creo que esto se hace en la tabla wp_term_relationships donde object_id = post_id en la tabla de publicaciones.

¿Alguien puede añadir más luz sobre esto? ¿Hay más dependencias que deben insertarse en otras tablas? Solo nos interesa la publicación, no hay comentarios ni nada más. También necesitaría saber cuál es el estándar para el campo GUID.

Si esta es una muy mala idea, dado que el cargador de RSS en 3.6 no funciona, ¿qué podemos hacer? Vimos el complemento del importador de CVS y podemos intentarlo… pero quería saber si podemos hacerlo directamente en PHPMyAdmin o alguna otra herramienta estándar para importar directamente a la base de datos. Solo tenemos que asegurarnos de que se inserte la categoría.

Seguro que puedes hacerlo en PhpMyAdmin. PhpMyAdmin > SQL

INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`)

Tus valores comienzan aquí.

VALUES(1, 1, '2013-11-05 03:06:30', '2013-11-05 03:06:30', 'Old blog post content', 'Post Title', '', 'publish', 'open', 'open', '', 'Post Name', '', '', '2013-11-05 03:06:30', '2013-11-05 03:06:30', '', 0, 'http://localhost:8080/wordpress/?p=1', 0, 'post', '', 1)


Usaría la función Combinar correspondencia en MS Office para crear las consultas. Ponga todas las publicaciones antiguas en una hoja de cálculo de Excel. La fila de encabezado de la hoja de cálculo debe corresponder a…
ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count

Luego, cuando su archivo xls esté listo, cree un nuevo documento en MS Word. Cuando seleccione nuevos destinatarios, haga referencia a la lista xls que creó. Inserte los campos de combinación en el lugar correcto de la consulta… Se verá así:
VALUES('<ID>','<post_author>','<post_date>'.....

  • ¿Qué es exactamente guid y por qué la página de publicación individual no aparece cuando se usa .../?p=1 ? Estaba pensando en copiar el valor predeterminado (como se crea al publicar desde la interfaz de usuario web) pero para un nombre de publicación incremental personalizado (único) al final.

    – gr4nt3d

    16/09/2018 a las 14:45

  • Parece que el guid debe construirse como el formato elegido en Configuración de enlaces permanenteses decir http://localhost/2018/09/17/sample-post/ dónde sample-post es el post_name. Suficientemente fácil.

    – gr4nt3d

    17 de septiembre de 2018 a las 11:23


Si le preocupa importar los datos antiguos directamente a la base de datos de WordPress, puede usar CSV como formato intermedio. Hay muchos complementos creados para esto. Aquí hay uno que parece estar en desarrollo activo:

http://wordpress.org/plugins/wp-ultimate-csv-importer/

  • Yo también iría por el camino CSV.

    – brasofilo

    5 de noviembre de 2013 a las 10:10

avatar de usuario
Drohjho

Buena pregunta.

Pensemos en escribir un post. Toda la información escrita allí es sobre wp_post. Al momento de escribir una publicación de WordPress, puede ingresar qué es GUId y otras metainformaciones. Además, no es posible introducir ninguna otra información.

Ahora,

insert into 'wp_post' ('ID', 'post_author','post_date','post_date_gmt','post_content','post_content_filtered','post_title','post_excerpt','post_status','post_type','comment_status','ping_status','post_password','post_name','to_ping','pinged','post_modified','post_modified_gmt','post_parent','menu_order','post_mime_type','guid','post_category','tags_input','tax_input',meta_input');

en phpmyadmin es la mejor manera.

Y deberías ver la referencia

Y un diagrama de base de datos.
[database diagram[2]

wp_post centrado en el diagrama es muy apreciado por otras tablas.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad