WordPress no es solo una carpeta con archivos. Es un núcleo PHP, un conjunto de temas y plugins, una base de datos MySQL y una jerarquía de plantillas que decide qué se muestra en cada URL. Entender esa estructura te ahorra horas cuando toca mantener, depurar, actualizar, optimizar o proteger una web.
Esta guía está pensada para WordPress 7.x, la versión actual. Si vienes de una instalación estándar, todo lo que verás aquí te resultará familiar.
Resumen rápido
wp-admin/ywp-includes/son el núcleo. No se editan.wp-content/es tu espacio de trabajo: temas, plugins, uploads, mu-plugins e idiomas.wp-config.phpguarda credenciales, sales, prefijo de tablas y opciones de depuración.- La jerarquía de plantillas decide qué archivo del tema renderiza cada página.
- La base de datos usa el prefijo
wp_por defecto:wp_posts,wp_postmeta,wp_options,wp_users… - Si un cambio no se ve, limpia la caché antes de tocar más cosas.
1. Arquitectura general
WordPress se organiza en cuatro capas: el núcleo, el contenido y las extensiones, la configuración y la base de datos. El núcleo está en wp-admin/ y wp-includes/. Lo que tú añades vive en wp-content/. La configuración está en wp-config.php. Y los datos —entradas, páginas, usuarios, opciones— están en MySQL o MariaDB.
El resultado es un CMS que se puede extender sin tocar el núcleo: los temas controlan la capa visual, los plugins añaden funcionalidad y los hooks permiten que ambos se comuniquen con WordPress.
| Capa | Dónde vive | Para qué sirve |
|---|---|---|
| Núcleo | wp-admin/, wp-includes/ | Administración, API, editor de bloques, funciones y clases del sistema. |
| Contenido y extensiones | wp-content/ | Temas, plugins, imágenes, traducciones y archivos subidos. |
| Configuración | wp-config.php | Conexión a base de datos, sales, prefijo, depuración y constantes. |
| Datos | MySQL / MariaDB | Entradas, páginas, usuarios, opciones, metadatos, comentarios y taxonomías. |
| Servidor | Apache, Nginx o LiteSpeed | Reescritura de URLs, SSL, caché, reglas de seguridad y ejecución de PHP. |
Versión: esta guía se centra en WordPress 7.x, la versión actual. La estructura de archivos y tablas es estable y te servirá para orientarte en cualquier instalación moderna.
2. Estructura de carpetas en la raíz
Esta es la estructura típica de una instalación de WordPress. Algunos archivos pueden no existir según el servidor, los plugins o la configuración.
wordpress/
├── wp-admin/ # Panel de administración (núcleo)
├── wp-content/ # Temas, plugins, uploads, idiomas...
│ ├── themes/
│ ├── plugins/
│ ├── mu-plugins/
│ ├── uploads/
│ ├── languages/
│ ├── upgrade/
│ └── cache/ # Creada por plugins de caché
├── wp-includes/ # Núcleo: funciones, clases, REST API, editor
├── wp-config.php # Configuración (sensible)
├── wp-config-sample.php # Plantilla de configuración
├── index.php # Punto de entrada del front
├── wp-load.php # Carga WordPress
├── wp-settings.php # Arranque del núcleo
├── wp-blog-header.php # Carga el entorno y la plantilla
├── wp-login.php # Acceso al panel
├── wp-cron.php # Tareas programadas
├── wp-mail.php # Procesamiento de correo entrante
├── wp-signup.php # Registro multisitio
├── wp-trackback.php # Trackbacks
├── xmlrpc.php # API XML-RPC
├── .htaccess # Reescritura y seguridad (Apache/LiteSpeed)
├── .maintenance # Modo mantenimiento temporal
├── readme.html
└── license.txt
No todo lo que aparece en wp-content/ es de WordPress. Carpetas como cache/, uploads/elementor/ o uploads/woocommerce_uploads/ las crean plugins o temas. Y archivos como advanced-cache.php, object-cache.php o db.php son drop-ins: los carga WordPress automáticamente si existen.
No edites el núcleo. Cualquier cambio en wp-admin/ o wp-includes/ se perderá en la siguiente actualización y puede romper la web. Si necesitas modificar comportamiento, usa un plugin, un tema hijo o un hook.
El archivo .htaccess solo se usa en Apache y LiteSpeed. En Nginx, la reescritura y las reglas de seguridad van en la configuración del servidor. El archivo .maintenance aparece cuando WordPress entra en modo mantenimiento; si se queda atascado, se elimina.
3. wp-content/: el espacio de trabajo
Si solo tienes que recordar una carpeta, que sea wp-content/. Aquí vive todo lo que no es núcleo y es donde se hacen la mayoría de las personalizaciones.
| Carpeta | Qué contiene | Cuándo tocarla |
|---|---|---|
themes/ | Un directorio por tema instalado. | Para crear un tema hijo o revisar plantillas. No edites el tema padre. |
plugins/ | Un directorio por plugin. | Para instalar, actualizar o depurar plugins. No edites plugins de terceros. |
mu-plugins/ | Plugins de carga obligatoria. | Para código imprescindible que debe cargarse siempre, sin activación manual. |
uploads/ | Imágenes, PDF y archivos subidos, organizados por año y mes. | Solo para revisar permisos o archivos. La gestión normal se hace desde Medios. |
languages/ | Traducciones de núcleo, temas y plugins. | Para instalar o revisar traducciones. |
upgrade/ | Archivos temporales durante actualizaciones. | No se toca; WordPress la usa y la limpia. |
cache/ | Caché generada por plugins. | Para purgar caché si el plugin lo indica. No es una carpeta del núcleo. |
Dentro de uploads/ pueden convivir carpetas de terceros: elementor/ con CSS generado y fuentes, woocommerce_uploads/ con descargables, etc. No edites esos archivos generados: si usas Elementor, regenera el CSS desde su panel; si usas WooCommerce, revisa la configuración del plugin.
Los drop-ins son archivos especiales que WordPress detecta y carga desde wp-content/. Los más habituales son advanced-cache.php (caché avanzada), object-cache.php (caché de objetos) y db.php (capa de base de datos). Si un plugin de caché los instala, no los borres a mano sin desactivar el plugin primero.
4. wp-admin/ y wp-includes/
wp-admin/ es el panel de administración. Contiene las pantallas del escritorio, la gestión de entradas, usuarios, plugins, temas, ajustes, AJAX y los assets del panel. wp-includes/ es el núcleo del front y de la API: funciones, clases, el editor de bloques, la REST API, los endpoints y las librerías internas.
Ambas carpetas se actualizan con WordPress. Si las modificas, la actualización las sobrescribe. Si sospechas que han sido modificadas, no las “arregles” a mano: reinstala el núcleo desde una copia oficial, compara con los checksums y restaura desde una copia limpia.
Si buscas una intrusión, revisa primero wp-content/, los plugins, el tema, uploads/ y la configuración. El núcleo también puede comprometerse, pero lo habitual es que el atacante entre por un plugin, un tema o credenciales y busque persistencia fuera del núcleo. Tienes más detalle en Intrusiones en WordPress: análisis más técnico y soluciones.
5. wp-config.php
wp-config.php es el archivo de configuración principal. Está en la raíz de WordPress, aunque puede moverse un nivel por encima del directorio público para protegerlo. Contiene las credenciales de la base de datos, el prefijo de tablas, las sales de seguridad y varias constantes de comportamiento.
| Constante | Para qué sirve |
|---|---|
DB_NAME, DB_USER, DB_PASSWORD, DB_HOST | Datos de conexión a MySQL/MariaDB. |
DB_CHARSET, DB_COLLATE | Juego de caracteres y collation de la base de datos. |
$table_prefix | Prefijo de las tablas. Por defecto, wp_. |
AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY y sus sales | Firma de cookies y tokens. Deben ser únicas y largas. |
WP_DEBUG, WP_DEBUG_LOG, WP_DEBUG_DISPLAY | Depuración. Solo en staging; en producción, desactivado. |
WP_HOME, WP_SITEURL | URL del sitio y de WordPress. Útiles en migraciones, pero pueden causar problemas si se fijan mal. |
WP_MEMORY_LIMIT | Memoria disponible para WordPress. |
DISALLOW_FILE_EDIT | Desactiva el editor de archivos del panel. Recomendado en producción. |
WP_ENVIRONMENT_TYPE | Entorno: local, development, staging o production. |
WP_POST_REVISIONS | Número de revisiones por entrada o false para desactivarlas. |
DISABLE_WP_CRON | Desactiva el cron interno para usar el cron del servidor. |
WP_CACHE | Activa la caché avanzada si hay un drop-in instalado. |
FS_METHOD | Método de sistema de archivos: direct, ssh2 o ftpext. |
Las sales se generan desde la API de claves secretas de WordPress. Si las cambias, se invalidan las sesiones y todos los usuarios tendrán que volver a iniciar sesión. No las reutilices entre sitios ni las subas a un repositorio público.
En producción, WP_DEBUG debe estar en false. Si necesitas investigar un error, activa WP_DEBUG_LOG y revisa wp-content/debug.log; no muestres errores en pantalla a los visitantes. Y no edites wp-config.php en caliente sin copia de seguridad: un punto y coma mal puesto deja la web fuera de juego.
6. Temas: clásicos, bloques y child themes
El tema controla la capa visual. WordPress admite dos modelos: temas clásicos, basados en plantillas PHP, y temas de bloques, basados en plantillas HTML y theme.json. Muchos temas actuales son híbridos: usan PHP para la estructura y el editor de bloques para el contenido.
Tema clásico
mi-tema/
├── style.css # Cabecera del tema y estilos
├── functions.php # Funciones, hooks y assets
├── index.php # Plantilla de respaldo
├── header.php
├── footer.php
├── sidebar.php
├── single.php # Entrada individual
├── page.php # Página estática
├── archive.php # Archivos y categorías
├── search.php
├── 404.php
├── comments.php
├── template-parts/ # Partes reutilizables
├── inc/ # Código auxiliar
├── assets/ # CSS, JS e imágenes
└── screenshot.png
Tema de bloques
mi-tema-bloques/
├── style.css
├── theme.json # Ajustes y estilos globales
├── functions.php
├── templates/
│ ├── index.html
│ ├── single.html
│ ├── page.html
│ ├── archive.html
│ └── 404.html
├── parts/
│ ├── header.html
│ └── footer.html
├── patterns/
├── assets/
└── screenshot.png
La forma correcta de personalizar un tema sin perder cambios es crear un tema hijo. Su style.css incluye la cabecera del tema y la línea Template: tema-padre; su functions.php encola los estilos del padre y del hijo. Solo sobrescribes las plantillas que necesitas.
theme.json permite definir colores, tipografías, espaciados y ajustes de bloque desde un solo archivo. Es la base de los temas de bloques, pero también puede usarse en temas clásicos para limitar opciones del editor.
Si usas Elementor, muchas plantillas y ajustes se guardan en la base de datos, no en archivos del tema. El CSS generado suele estar en wp-content/uploads/elementor/css/. No edites esos archivos: regenera el CSS desde Elementor cuando hagas cambios. El tema sigue aportando la cabecera, el pie y la estructura base.
Si necesitas un tema a medida o una web corporativa con WordPress, en Solusen trabajamos con diseño web con WordPress.
7. Plugins y mu-plugins
Los plugins añaden funcionalidad sin tocar el núcleo. Cada uno vive en su carpeta dentro de wp-content/plugins/ y tiene un archivo principal con una cabecera que WordPress lee para mostrarlo en el panel.
mi-plugin/
├── mi-plugin.php # Archivo principal con la cabecera
├── includes/ # Clases y funciones internas
├── admin/ # Pantallas y lógica del back office
├── public/ # Lógica del front
├── assets/ # CSS, JS e imágenes
├── languages/ # Traducciones
├── vendor/ # Dependencias Composer
├── uninstall.php # Limpieza al desinstalar
└── readme.txt
La cabecera del archivo principal incluye datos como Plugin Name, Description, Version, Author, Requires at least, Requires PHP, Text Domain y License. WordPress usa esa información para gestionar el plugin y las actualizaciones.
Los plugins se comunican con WordPress mediante hooks: acciones (add_action) y filtros (add_filter). Esa es la forma correcta de extender el comportamiento sin modificar el núcleo. Si un plugin necesita datos propios, lo normal es que cree sus propias tablas o use wp_options/wp_postmeta según el caso.
La carpeta mu-plugins/ carga plugins de forma obligatoria, sin activación manual. Es útil para código imprescindible de la instalación, pero no para cosas que quieras poder desactivar fácilmente. Los archivos deben estar directamente en wp-content/mu-plugins/ o cargarse desde un archivo puente.
Antes de instalar un plugin, revisa su mantenimiento, compatibilidad con tu versión de WordPress y PHP, y su historial de seguridad. Un plugin abandonado es una puerta de entrada. Si sospechas de una intrusión, revisa nuestra guía sobre los ataques más habituales en WordPress.
8. Jerarquía de plantillas
Cuando alguien visita una URL, WordPress no carga una plantilla al azar. Sigue una jerarquía: busca el archivo más específico en el tema y, si no lo encuentra, baja al siguiente. Entender esta cadena es básico para saber qué archivo estás editando.
| Tipo de página | Orden de plantillas (de más específica a más general) |
|---|---|
| Entrada individual | single-post-{slug}.php → single-post.php → single.php → singular.php → index.php |
| Página estática | page-{slug}.php → page-{id}.php → page.php → singular.php → index.php |
| Categoría | category-{slug}.php → category-{id}.php → category.php → archive.php → index.php |
| Etiqueta | tag-{slug}.php → tag-{id}.php → tag.php → archive.php → index.php |
| Archivo / taxonomía | archive.php → index.php (y variantes de taxonomía) |
| Home / blog | front-page.php → home.php → index.php |
| Búsqueda | search.php → index.php |
| Error 404 | 404.php → index.php |
En temas de bloques, la jerarquía se resuelve con archivos HTML dentro de templates/: single.html, page.html, archive.html, index.html, etc. Los archivos de parts/ se insertan como partes reutilizables (cabecera, pie).
Un ejemplo: si una entrada tiene el slug estructura-wordpress, WordPress buscará primero single-post-estructura-wordpress.php; si no existe, single-post.php, luego single.php, después singular.php y, como último recurso, index.php. Si el tema no tiene ninguna, WordPress usa la plantilla de respaldo.
Dos archivos que conviene diferenciar: front-page.php se usa para la portada, sea estática o el blog; home.php se usa para la página de entradas cuando la portada es una página estática. Si algo no aparece donde esperas, revisa primero esta jerarquía.
9. La base de datos
WordPress usa MySQL o MariaDB. El prefijo por defecto es wp_, aunque se puede cambiar durante la instalación. Se define en wp-config.php mediante $table_prefix. Si lo cambias después, necesitas migrar los datos y actualizar la configuración; no lo hagas a la ligera.
| Tabla | Qué guarda |
|---|---|
wp_posts | Entradas, páginas, revisiones, adjuntos, elementos de menú, tipos de contenido personalizados, plantillas de bloque y plantillas de Elementor. |
wp_postmeta | Metadatos de cada entrada: campos personalizados, SEO, datos de Elementor (_elementor_data), ajustes de plugins… |
wp_options | Opciones del sitio, plugins activos, ajustes del tema, cron, transients y datos de configuración. |
wp_users y wp_usermeta | Usuarios, roles, capacidades, preferencias y tokens de sesión. |
wp_terms, wp_term_taxonomy, wp_term_relationships y wp_termmeta | Categorías, etiquetas, taxonomías personalizadas y sus relaciones con el contenido. |
wp_comments y wp_commentmeta | Comentarios y sus metadatos. |
wp_links | Enlaces heredados de versiones antiguas. Puede no existir en instalaciones nuevas. |
| Tablas multisitio | wp_blogs, wp_blogmeta, wp_site, wp_sitemeta, wp_registration_log, wp_signups y wp_blog_versions. |
Dentro de wp_posts, la columna post_type distingue el tipo de contenido: post, page, attachment, revision, nav_menu_item, wp_block, wp_template, wp_template_part, wp_global_styles, wp_navigation, elementor_library, custom_css o customize_changeset. La columna post_status indica si está publicada, en borrador, pendiente, privada, programada, en papelera o es una revisión.
Dos ideas clave: wp_postmeta es una tabla clave-valor que puede crecer mucho; y wp_options almacena opciones con autoload, que se cargan en cada petición. Si tienes demasiadas opciones autocargadas o metadatos huérfanos, la web se ralentiza.
Una consulta de lectura habitual para revisar las últimas entradas sería:
SELECT ID, post_title, post_date
FROM wp_posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY post_date DESC
LIMIT 10;
Cambia el prefijo wp_ si tu instalación usa otro. Para modificaciones, usa el panel, un plugin o WP-CLI; no edites tablas a mano sin copia de seguridad. WP-CLI tiene comandos muy útiles:
wp db export
wp db import
wp search-replace 'https://old.com' 'https://new.com' --all-tables
wp post list
wp plugin list
wp theme list
wp cache flush
wp rewrite flush
Nunca hagas cambios directos en la base de datos sin copia de seguridad y sin probar en staging. Una consulta mal filtrada puede romper relaciones, menús, usuarios o el contenido. El esquema de referencia está en la documentación de WordPress y en la API de metadatos; para trabajar con datos, usa $wpdb, las APIs de WordPress o WP-CLI.
Si necesitas profundizar, la guía oficial The WordPress Database y la Metadata API son buenos puntos de partida.
10. Flujo de una petición
Cuando un visitante entra en la web, WordPress sigue un recorrido concreto. Entenderlo ayuda a depurar y a saber en qué capa buscar.
Petición del navegador
↓
index.php
↓
wp-blog-header.php
↓
wp-load.php → wp-config.php → wp-settings.php
↓
wp()
↓
WP_Query
↓
template-loader.php
↓
Plantilla del tema
↓
Respuesta HTML
- Front:
index.phpcarga el entorno, se ejecuta la consulta principal y se resuelve la plantilla según la jerarquía. - Back office: se entra por
wp-admin/; se carga WordPress, se comprueban permisos y se renderiza la pantalla correspondiente. - REST API: las peticiones a
/wp-json/se enrutan conrest_api_inity sus callbacks. - Cron:
wp-cron.phpejecuta tareas programadas cuando hay tráfico, salvo que uses cron real del servidor.
Para depurar, activa WP_DEBUG y WP_DEBUG_LOG solo en staging, revisa wp-content/debug.log y los logs del servidor. Si el error aparece tras activar un plugin o cambiar una plantilla, el problema suele estar ahí, no en el núcleo.
11. Dónde tocar cada cosa
Esta tabla resume la decisión más importante: qué archivo o zona usar según lo que quieras cambiar.
| Quiero… | Dónde hacerlo |
|---|---|
| Cambiar el diseño o una plantilla | Tema hijo, theme.json o Elementor. No edites el tema padre. |
| Añadir funcionalidad nueva | Plugin propio. No metas lógica de negocio en el núcleo. |
| Hacer un ajuste pequeño | functions.php del tema hijo o un plugin de snippets; mejor un plugin propio si debe sobrevivir al tema. |
| Cambiar credenciales de base de datos | wp-config.php, con copia de seguridad previa. |
| Cambiar las URLs o permalinks | Ajustes → Enlaces permanentes; revisa .htaccess en Apache/LiteSpeed. |
| Subir o gestionar imágenes | Medios. Los archivos van a wp-content/uploads/. |
| Cambiar traducciones | wp-content/languages/ o un plugin de traducción. |
| Limpiar la caché | Plugin de caché, panel de WordPress o WP-CLI (wp cache flush). |
| Revisar un error | wp-content/debug.log, logs de PHP y del servidor web. |
| Cambiar correo saliente | Plugin SMTP; WordPress usa wp_mail(). |
| Gestionar usuarios y roles | Panel de usuarios; tablas wp_users y wp_usermeta. |
| Actualizar WordPress | Panel o WP-CLI, con copia de seguridad y staging. |
| Reforzar la seguridad | wp-config.php, plugins de seguridad, servidor y permisos. |
12. Buenas prácticas y errores comunes
La estructura de WordPress está pensada para extenderse, no para modificarse a lo bruto. Estas son las reglas que evitan la mayoría de los problemas:
- No edites
wp-admin/,wp-includes/ni el tema padre. - Usa un tema hijo para el diseño y un plugin propio para la funcionalidad.
- Mantén actualizados WordPress, temas, plugins y PHP; elimina lo que no uses.
- Haz copias de seguridad de archivos y base de datos antes de cualquier cambio importante.
- Prueba en staging y verifica el front, el panel y el proceso de compra si hay tienda.
- Activa
DISALLOW_FILE_EDITy desactivaWP_DEBUGen producción. - Usa contraseñas fuertes, doble factor y mínimo privilegio para los usuarios.
- Permisos 755 para directorios y 644 para archivos;
wp-config.phpen 600 si el hosting lo permite. - Bloquea la ejecución de PHP en
uploads/y protegewp-config.php,xmlrpc.phpyreadme.htmlsi no los usas. - Limita revisiones, limpia transients y no acumules plugins innecesarios.
- Si desactivas
WP_CRON, configura un cron real en el servidor. - Monitoriza logs, uptime, integridad de archivos y accesos.
| Síntoma | Causa probable | Solución |
|---|---|---|
| Pantalla blanca o error 500 | Error PHP, plugin incompatible o memoria agotada | Activar log, revisar debug.log, desactivar plugins por FTP y aumentar memoria. |
| Error de conexión a la base de datos | Credenciales incorrectas en wp-config.php | Revisar DB_NAME, DB_USER, DB_PASSWORD y DB_HOST. |
| Las URLs dan 404 | Reglas de reescritura o .htaccess | Guardar enlaces permanentes y revisar la configuración del servidor. |
| No se suben imágenes | Permisos, límites de PHP o disco lleno | Revisar uploads/, upload_max_filesize y espacio. |
| Modo mantenimiento atascado | Archivo .maintenance residual | Eliminar .maintenance de la raíz. |
| Contenido mixto o recursos inseguros | URLs HTTP en una web HTTPS | Corregir URLs con wp search-replace y revisar el tema. |
| Conflicto de plugins | Dos plugins modifican lo mismo | Desactivar todos, activar uno a uno y revisar logs. |
| Los cambios de Elementor no se ven | CSS generado o caché | Regenerar CSS de Elementor y purgar caché. |
| El núcleo parece modificado | Intrusión o actualización incompleta | Reinstalar núcleo limpio, comparar checksums y restaurar copia. |
La seguridad también forma parte de la estructura. Un plugin abandonado, un tema pirata o un wp-config.php expuesto pueden arruinar la mejor web. Si sospechas de una intrusión, revisa el análisis técnico de intrusiones en WordPress, la guía de ataques habituales y el artículo sobre PHP Shell.
13. Preguntas frecuentes sobre la estructura de WordPress
¿Dónde está el archivo wp-config.php?
En la raíz de WordPress, junto a wp-admin/ y wp-content/. También puede estar un nivel por encima del directorio público si el hosting lo permite. Contiene las credenciales de la base de datos y las sales de seguridad.
¿Dónde se guardan los temas y los plugins?
Los temas en wp-content/themes/ y los plugins en wp-content/plugins/. Los mu-plugins van en wp-content/mu-plugins/ y se cargan automáticamente.
¿Qué es wp-content y qué puedo tocar?
Es la carpeta de contenido y extensiones. Dentro están los temas, plugins, uploads, idiomas y mu-plugins. Es la zona donde se trabaja, pero conviene no editar plugins de terceros ni archivos generados por Elementor o plugins de caché.
¿Puedo editar wp-includes o wp-admin?
No. Son el núcleo de WordPress y se sobrescriben en cada actualización. Cualquier cambio debe hacerse con un plugin, un tema hijo o un hook. Si están comprometidos, reinstala el núcleo desde una copia oficial.
¿Qué tablas guardan las entradas y sus metadatos?
Las entradas y páginas están en wp_posts; sus metadatos, en wp_postmeta. Los usuarios están en wp_users y wp_usermeta, y las opciones del sitio en wp_options.
¿Cómo cambio el prefijo wp_ de las tablas?
Se puede definir otro prefijo durante la instalación. Cambiarlo después requiere migrar los datos y actualizar wp-config.php. No es una operación para hacer sin copia de seguridad y sin probar en staging.
¿Cómo limpio la caché de WordPress?
Depende del sistema de caché. Si usas un plugin, purga desde su panel. También puedes usar wp cache flush con WP-CLI. Si usas caché de página en el servidor o CDN, purga también esa capa.
¿Qué diferencia hay entre un tema clásico y un tema de bloques?
El tema clásico usa plantillas PHP y style.css. El tema de bloques usa plantillas HTML, theme.json y el editor de sitios. Muchos temas actuales son híbridos y combinan ambas aproximaciones.
14. Conclusión
Conocer la estructura de WordPress te permite saber dónde está cada cosa, qué se puede tocar y qué conviene dejar quieto. La regla de oro es sencilla: extiende antes de modificar, usa un tema hijo, prueba en staging y haz copia antes de cambiar. Con eso, la mayoría de los problemas se evitan antes de que aparezcan.
Si tu web WordPress necesita mantenimiento, una revisión de seguridad o una migración, podemos ayudarte.
¿Necesitas ayuda con tu WordPress?
Revisamos la estructura, el mantenimiento, el rendimiento y la seguridad de tu web. También te acompañamos en migraciones y rediseños.
Documentación oficial de WordPress:
Organizing theme files · Block theme structure · wp-config.php
