Ir al contenido principal

Importación de contenido en WordPress con Blueprints

Un nuevo sitio de WordPress Playground comienza con contenido básico. Un Blueprint puede ayudar a cubrir esa carencia a partir de un archivo de exportación de WordPress, generar contenido con las API de WordPress o restaurar una instantánea ZIP de Playground.

Esta guía se centra en elegir un método de Blueprint para importar contenido y presenta un pequeño benchmark que compara tres enfoques. Importar datos puede ser útil para el contenido inicial de temas, los datos de prueba, el contenido educativo y otras estrategias para crear demostraciones. Para conocer más opciones, consulta Proporcionar contenido para tu demostración con Playground.

Estos enfoques resuelven problemas diferentes:

MétodoRecomendado paraQué transfiere
importWxrContenido portátil compartido entre sitios WordPress sin sobrescribir el contenido existenteEntradas, páginas, tipos de contenido personalizados, términos, autores, comentarios y referencias a adjuntos
runPHPPequeños datos de prueba deterministas y lógica personalizadaTodo lo que el código PHP crea mediante las API de WordPress
importWordPressFilesRestaurar una demostración completa de PlaygroundLa base de datos y los archivos WordPress presentes en el ZIP, como plugins, temas y archivos subidos

Si solo necesitas entradas y términos, empieza con WXR. Si el contenido se genera o depende de lógica de configuración, usa runPHP. Si la base de datos, los medios, los plugins, los temas y los ajustes deben restaurarse juntos, usa una instantánea ZIP.

Importar una exportación XML de WordPress con importWxr

WordPress denomina a su formato de exportación XML WordPress eXtended RSS, o WXR. Crea uno desde Herramientas > Exportar en un sitio WordPress existente y pásalo al paso importWxr.

Este ejemplo espera encontrar content.xml junto a blueprint.json en un paquete de Blueprint:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"preferredVersions": {
"php": "8.3",
"wp": "7.0"
},
"login": true,
"steps": [
{
"step": "importWxr",
"file": {
"resource": "bundled",
"path": "/content.xml"
},
"fetchAttachments": false,
"rewriteUrls": true,
"importComments": false,
"authorsMode": "default-author",
"defaultAuthorUsername": "admin"
}
]
}

Para un archivo alojado, sustituye el recurso bundled por un recurso url. Establece fetchAttachments en true cuando el importador deba descargar los archivos de medios referenciados por el archivo WXR. La transferencia de red puede dominar el tiempo total de configuración, por lo que el benchmark posterior desactiva la descarga de adjuntos.

importWxr también puede asignar autores importados a usuarios locales, crear usuarios y aplicar sustituciones explícitas de URL. Consulta las opciones de importWxr antes de importar contenido desde otro dominio.

Ventajas

  • Usa el formato estándar y portátil de intercambio de contenido de WordPress.
  • Conserva tipos de contenido, taxonomías, metadatos de entradas, autores, comentarios y relaciones de contenido representadas en la exportación.
  • Puede descargar adjuntos y reescribir las URL antiguas para el nuevo sitio.
  • Mantiene el contenido separado del núcleo de WordPress, los plugins, los temas y la mayoría de los ajustes del sitio de destino.
  • Es fácil de inspeccionar, versionar y editar manualmente con cualquier editor de texto porque el origen es XML.

Desventajas

  • No clona el sitio completo. Los plugins, temas, tablas de plugins, opciones y archivos no representados en WXR necesitan pasos de Blueprint separados.
  • La importación de adjuntos requiere acceso a la red y depende de que las URL antiguas de medios sigan disponibles.
  • Los archivos XML grandes usan más tiempo de análisis y memoria que restaurar una base de datos SQLite existente.
  • Volver a importar el mismo archivo puede crear duplicados; no es un formato de sincronización idempotente.
  • El Blueprint instala automáticamente la dependencia WordPress Importer, lo que añade trabajo de configuración antes de iniciar la importación WXR.

Generar contenido con runPHP

El paso runPHP puede llamar directamente a las API de WordPress. Carga siempre /wordpress/wp-load.php antes de llamar a funciones como wp_insert_post().

El siguiente ejemplo crea las 100 entradas usadas por el benchmark:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"preferredVersions": {
"php": "8.3",
"wp": "7.0"
},
"login": true,
"steps": [
{
"step": "runPHP",
"code": "<?php\nrequire_once '/wordpress/wp-load.php';\n\nfor ( $index = 1; $index <= 100; $index++ ) {\n\t$result = wp_insert_post(\n\t\tarray(\n\t\t\t'post_title' => 'Benchmark post ' . $index,\n\t\t\t'post_content' => '<!-- wp:paragraph --><p>Blueprint import benchmark content.</p><!-- /wp:paragraph -->',\n\t\t\t'post_status' => 'publish',\n\t\t\t'post_type' => 'post',\n\t\t),\n\t\ttrue\n\t);\n\tif ( is_wp_error( $result ) ) {\n\t\tthrow new RuntimeException( $result->get_error_message() );\n\t}\n}"
}
]
}

Para programas mayores, mantén el código en un pequeño plugin o divide la configuración en pasos específicos en lugar de mantener una cadena JSON muy larga. Usa las API de WordPress en vez de escribir directamente en las tablas de la base de datos para que los hooks, las cachés y la validación sigan funcionando.

Ventajas

  • Ofrece control completo sobre los datos generados y sus relaciones.
  • No requiere un archivo de contenido ni acceso a la red.
  • Puede configurar opciones, metadatos de entradas, usuarios, taxonomías y datos específicos de plugins en la misma operación.
  • Funciona bien con pequeños datos de prueba cuya fuente de verdad debe seguir siendo el código.
  • Puede hacerse idempotente buscando registros existentes antes de crearlos.

Desventajas

  • El PHP personalizado es más extenso que exportar contenido editorial existente.
  • El script debe gestionar errores, nuevas ejecuciones, dependencias y fallos parciales.
  • El código puede quedar acoplado a las API o al modelo de base de datos de un plugin.
  • Crear muchos registros uno a uno sigue ejecutando los hooks de WordPress y escrituras en la base de datos para cada registro, por lo que el rendimiento empeora al crecer el conjunto de datos.
  • Un Blueprint es una entrada de confianza. Ejecuta PHP solo desde una fuente en la que confíes.

Restaurar un ZIP de Playground con importWordPressFiles

El paso importWordPressFiles restaura un sitio, no importa solo contenido. Descomprime los archivos WordPress de nivel superior de un ZIP y reemplaza las rutas correspondientes en la nueva instancia. Un ZIP creado con la opción Download as zip de Playground incluye wp-content, su base de datos SQLite, los archivos subidos y un manifiesto usado para ajustar las URL de ámbito de Playground.

Coloca el archivo descargado junto a blueprint.json y haz referencia a él como recurso bundled:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/",
"preferredVersions": {
"php": "8.3",
"wp": "7.0"
},
"login": true,
"steps": [
{
"step": "importWordPressFiles",
"wordPressFilesZip": {
"resource": "bundled",
"path": "/site.zip"
}
}
]
}

El ZIP puede contener solo wp-content, un directorio WordPress completo o un directorio WordPress anidado en una carpeta contenedora. Usa pathInZip cuando el archivo contenga varios sitios o cuando la detección automática de la raíz no sea suficiente.

Mantén compatibles las versiones de WordPress, PHP, temas y plugins de origen y destino. El paso actualiza la base de datos importada y ajusta las URL de ámbito de Playground, pero no es una herramienta de migración general para configuraciones arbitrarias de servidores de producción.

Ventajas

  • Restaura juntos la base de datos, los archivos subidos, los plugins, los temas y los ajustes.
  • Conserva tablas y opciones específicas de plugins que WXR no puede representar.
  • Evita recrear cada entrada mediante las API de WordPress, lo que puede ser eficiente para una demostración preparada y repetible.
  • Funciona sin conexión cuando la instantánea está incluida con el Blueprint.
  • Produce la copia más fiel de la instancia de Playground de origen.

Desventajas

  • Sustituye todas las rutas de nivel superior presentes en el ZIP, por lo que puede sobrescribir el estado existente del sitio en vez de combinar contenido.
  • Es mayor, opaco y más difícil de revisar o resolver en fusiones del control de versiones.
  • Acopla la instantánea a sus versiones de WordPress, PHP, temas, plugins y base de datos de forma más estrecha que WXR.
  • No es adecuado para importar entradas seleccionadas en un sitio existente.
  • Solo debe restaurarse desde una fuente de confianza; puede contener PHP ejecutable y una base de datos completa.

Resultados de las pruebas de los distintos métodos

Los siguientes resultados de las pruebas se midieron el 13 de julio de 2026 en un Apple M4 Pro con 24 GB de memoria. Se usaron Node.js 22.16, WordPress 7.0, PHP 8.3, 100 entradas y cinco rondas con un sitio nuevo para cada método:

MétodoTamaño de entradaMedianaMínimoMáximoRespecto al más rápido
XML / importWxr106.0 KiB2.21 s2.16 s2.25 s6.90x
PHP / runPHPCódigo generado2.78 s2.76 s2.80 s8.68x
ZIP / importWordPressFiles50.5 KiB320 ms318 ms322 ms1.00x

Considera estos valores una referencia de un solo equipo, no una clasificación universal. La forma del conjunto de datos importa: los adjuntos favorecen un ZIP autocontenido, los hooks complejos de WordPress pueden ralentizar runPHP y la portabilidad de WXR puede ser más importante que la velocidad bruta.

Otras fuentes de contenido

Los Blueprints también admiten importThemeStarterContent para el contenido inicial registrado de un tema y el paso wp-cli para comandos como wp post generate. Son útiles cuando el tema o el comando WP-CLI ya es la fuente canónica de los datos de la demostración, pero quedan fuera de este benchmark de importación de contenido.