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étodo | Recomendado para | Qué transfiere |
|---|---|---|
importWxr | Contenido portátil compartido entre sitios WordPress sin sobrescribir el contenido existente | Entradas, páginas, tipos de contenido personalizados, términos, autores, comentarios y referencias a adjuntos |
runPHP | Pequeños datos de prueba deterministas y lógica personalizada | Todo lo que el código PHP crea mediante las API de WordPress |
importWordPressFiles | Restaurar una demostración completa de Playground | La 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étodo | Tamaño de entrada | Mediana | Mínimo | Máximo | Respecto al más rápido |
|---|---|---|---|---|---|
XML / importWxr | 106.0 KiB | 2.21 s | 2.16 s | 2.25 s | 6.90x |
PHP / runPHP | Código generado | 2.78 s | 2.76 s | 2.80 s | 8.68x |
ZIP / importWordPressFiles | 50.5 KiB | 320 ms | 318 ms | 322 ms | 1.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.