Archivos, wp-config y la base de datos
Módulo 1: Cómo funciona WordPress · Tiempo de lectura: 9 minutos
Objetivo de la lección: Después de esta lección reconocerá las carpetas de WordPress, los ajustes de wp-config.php y las tablas más importantes de la base de datos, y sabrá dónde encontrar qué.
Conceptos clave: wp-admin, wp-includes, wp-content (themes, plugins, uploads, mu-plugins), wp-config.php (DB_*, table_prefix, claves y salts, WP_DEBUG), .htaccess, wp_options (siteurl, home), wp_posts, wp_users
Dos mitades: archivos y base de datos
Un sitio WordPress siempre se compone de dos partes que van juntas:
- Archivos en la carpeta web de su dominio (en DirectAdmin
domains/example.com/public_html): el código de WordPress, sus temas, sus plugins y todo lo que suba. - Una base de datos: todos sus textos, páginas, menús, ajustes, usuarios y comentarios.
Esta distinción es importante en las copias de seguridad y las migraciones. Una copia de seguridad que solo contenga los archivos carece de todos sus textos. Una copia de seguridad que solo contenga la base de datos carece de todas sus fotos. Necesita ambas (lección 8.1).
Las carpetas
Abra su carpeta web en el Administrador de archivos o con un programa FTP y verá algo así:
public_html/
├── wp-admin/ el escritorio de administración (core)
├── wp-includes/ el resto de WordPress (core)
├── wp-content/ todo lo que es suyo
│ ├── themes/ los temas
│ ├── plugins/ los plugins
│ ├── uploads/ sus archivos multimedia, por año y mes: uploads/2026/11/
│ ├── mu-plugins/ plugins "must use" (si los hay)
│ ├── languages/ traducciones
│ └── upgrade/ carpeta temporal para actualizaciones
├── .htaccess reglas para el servidor web
├── index.php el punto de partida de cada solicitud de página
├── wp-config.php los ajustes de esta instalación
├── wp-login.php la página de inicio de sesión
├── xmlrpc.php una antigua conexión para apps (lección 7.3)
└── ... otros archivos wp-*.php del coreLa regla general: wp-admin, wp-includes y los archivos wp-*.php sueltos pertenecen a WordPress. Se sobrescriben en cada actualización. No coloque nunca nada propio ahí ni los modifique.
wp-content es suyo. Una actualización de WordPress no toca esta carpeta (excepto los temas y plugins predeterminados que vienen incluidos). Aquí van sus temas, plugins y archivos subidos. Algunas cosas que conviene saber:
- uploads es la que crece más rápido. Cada foto que sube, WordPress la guarda en varios formatos (lección 4.4). Un sitio con años de noticias puede tener gigabytes de archivos subidos.
- mu-plugins (must use) son plugins que siempre están activos y que no puede desactivar desde el escritorio de administración. Algunos proveedores de alojamiento y plugins los utilizan. Los intrusos también los usan a menudo para esconder algo (lección 7.5). Si no reconoce un archivo ahí, averigüe de dónde procede.
- Un plugin eliminado desaparece de
plugins. Un plugin desactivado permanece, con todo su código (lección 5.4).
wp-config.php: los ajustes
wp-config.php es lo primero que carga WordPress. Contiene los datos con los que WordPress accede a la base de datos, y algunos ajustes para toda la instalación. Una versión resumida:
define( 'DB_NAME', 'usuario_wp1' );
define( 'DB_USER', 'usuario_wp1' );
define( 'DB_PASSWORD', 'una-contraseña-larga-y-aleatoria' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'AUTH_KEY', 'texto largo y aleatorio' );
define( 'SECURE_AUTH_KEY', 'texto largo y aleatorio' );
define( 'LOGGED_IN_KEY', 'texto largo y aleatorio' );
define( 'NONCE_KEY', 'texto largo y aleatorio' );
define( 'AUTH_SALT', 'texto largo y aleatorio' );
define( 'SECURE_AUTH_SALT', 'texto largo y aleatorio' );
define( 'LOGGED_IN_SALT', 'texto largo y aleatorio' );
define( 'NONCE_SALT', 'texto largo y aleatorio' );
$table_prefix = 'wp_';
define( 'WP_DEBUG', false );
/* Eso es todo, ¡deje de editar aquí! */
require_once ABSPATH . 'wp-settings.php';Qué significa:
- DB_NAME, DB_USER, DB_PASSWORD, DB_HOST: con qué base de datos, usuario y contraseña se conecta WordPress, y en qué servidor. Si alguno no es correcto, verá "Error establishing a database connection". Esto suele ocurrir tras una migración o tras cambiar una contraseña de la base de datos.
- Las claves y salts (las ocho líneas con KEY y SALT): textos aleatorios con los que WordPress firma las cookies de inicio de sesión. Quien las conozca podría, en teoría, crear una cookie de inicio de sesión válida. Si las sustituye, se cerrará la sesión de todos los usuarios. Esto es precisamente lo que hay que hacer tras un hackeo (lección 7.5). Puede obtener valores nuevos en
https://api.wordpress.org/secret-key/1.1/salt/. - $table_prefix: el prefijo de todos los nombres de tabla, normalmente
wp_. Así pueden varias instalaciones compartir una misma base de datos. Elegir otro prefijo no es una medida de seguridad real, pero tampoco es perjudicial. - WP_DEBUG: activa los mensajes de error. En un sitio en producción esto está desactivado (
false). Cómo consultar errores de forma segura sin mostrarlos a los visitantes lo verá en la lección 5.4. - Los ajustes que añada usted mismo (por ejemplo,
DISALLOW_FILE_EDITen la lección 7.4 oDISABLE_WP_CRONen la lección 6.3) deben colocarse antes de la línea "deje de editar aquí".
wp-config.php contiene la contraseña de su base de datos. No comparta nunca el archivo, no coloque una copia de él en la carpeta web (como wp-config.php.bak o wp-config.old: cualquiera podría descargarla, ya que el servidor web no la ejecuta como PHP) y asígnele permisos de archivo estrictos (lección 7.4).
.htaccess
En LiteSpeed y Apache, la carpeta web contiene un archivo .htaccess con reglas para el servidor web. Empieza con un punto, por lo que muchos programas lo ocultan. WordPress coloca este bloque para las direcciones amigables (enlaces permanentes):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPressDicho de forma sencilla: "si no es un archivo existente (!-f) ni una carpeta existente (!-d), entrégaselo a index.php." Ese es el paso 2 de la lección 1.2. Los plugins (de caché, de seguridad) suelen añadir sus propios bloques. Coloque sus propias reglas fuera de los bloques de WordPress y de los plugins, ya que esos bloques a veces se reescriben. En nginx no existe .htaccess; ahí el proveedor de alojamiento gestiona esto en la configuración del servidor.
La base de datos: qué tabla sirve para qué
Con phpMyAdmin (en DirectAdmin, dentro de Administrador de bases de datos) puede consultar la base de datos. Una instalación normal tiene doce tablas; los plugins suelen añadir más. Las más importantes:
| Tabla | Qué contiene |
|---|---|
wp_posts | Entradas, páginas, revisiones, elementos de menú y, en los temas de bloques, también plantillas y patrones. Las imágenes también son aquí una "entrada" de tipo attachment |
wp_postmeta | Datos adicionales de las entradas, como el precio de un producto o los ajustes de un creador de páginas |
wp_options | Ajustes del sitio y de los plugins. Aquí están siteurl y home (lección 3.1), el nombre del tema activo y la lista de plugins activos |
wp_users y wp_usermeta | Usuarios, sus contraseñas (cifradas) y su rol |
wp_terms, wp_term_taxonomy, wp_term_relationships | Categorías, etiquetas y a qué entradas pertenecen |
wp_comments y wp_commentmeta | Comentarios |
Dos datos útiles. Primero: en wp_options están siteurl y home. Si son incorrectos (por ejemplo, tras una migración), su sitio enviará a todos a la dirección equivocada y usted no podrá volver a entrar en la administración. En ese caso puede restaurarlos en phpMyAdmin o con reglas en wp-config.php (lección 3.1). Segundo: muchos ajustes se guardan serializados, un formato de PHP en el que se cuenta la longitud de cada texto. Si modifica ese valor a mano, o aplica a la base de datos un simple "buscar y reemplazar", esa longitud deja de ser correcta y el ajuste se rompe (lección 3.2).
Consultar en phpMyAdmin es seguro. Modificar solo debe hacerlo si sabe lo que hace, y siempre con una copia de seguridad.
En la práctica: así se ve en un panel
Como ejemplo usamos DirectAdmin. En cPanel y Plesk los apartados se llaman igualmente Administrador de archivos (File Manager) y phpMyAdmin.
- Abra el Administrador de archivos y vaya a
domains/example.com/public_html. Active la opción de mostrar archivos ocultos para ver.htaccess. - Haga clic en
wp-config.phpy elija ver (no editar). BusqueDB_NAMEy$table_prefix. - Abra phpMyAdmin, elija a la izquierda la base de datos con ese nombre y consulte qué tablas hay.
- Haga clic en la tabla
wp_options(con su prefijo) y busque las filassiteurlyhome.
Resumen
- Un sitio WordPress son archivos más base de datos; una copia de seguridad necesita ambos.
wp-admin,wp-includesy los archivos sueltos del core pertenecen a WordPress;wp-contentes suyo.- wp-config.php contiene los datos de la base de datos, las claves y salts, el prefijo de las tablas y ajustes como WP_DEBUG. No guarde nunca una copia de él en la carpeta web.
.htaccessdirige todo lo que no es un archivo hacia index.php; las reglas propias se colocan fuera de los bloques de WordPress.- En
wp_optionsestán siteurl y home; los datos serializados no se modifican a mano.
Cuestionario
Ejercicio
Ejercicio D1.3: Explore su propia instalación. Abra su carpeta web en el Administrador de archivos o con un programa FTP y, a continuación, su base de datos en phpMyAdmin. No haga nada más que observar. Marque lo que haya encontrado y anote: el prefijo de las tablas, el número de tablas de la base de datos, los valores de siteurl y home en wp_options, y las carpetas de wp-content. Anote también si hay archivos en wp-content/mu-plugins y si sabe de dónde proceden. No comparta nunca su contraseña de base de datos, ni siquiera en este formulario.
Ejercicio D1.3: Explore su propia instalación
Este ejercicio lo hace usted mismo; nadie lo revisa. Marque lo que haya hecho y señale el ejercicio como realizado.
El prefijo termina con un guion bajo (por ejemplo wp_ o un código aleatorio). Una instalación normal tiene 12 tablas; los plugins añaden más. siteurl y home empiezan por https://. Nunca comparta la contraseña de la base de datos de wp-config.php, tampoco aquí.
Sus marcas y notas se quedan solo en este navegador; no las enviamos a ningún sitio. Si ha iniciado sesión, en Mis cursos solo guardamos que ha realizado el ejercicio.
Para saber más
Estos artículos describen los pasos en los paneles de WebOké; en otros paneles funcionan de forma parecida.
- Manual de DirectAdmin 11.1: Abrir el Administrador de archivos: las carpetas de su paquete
- Manual de DirectAdmin 11.4: Mostrar y editar archivos ocultos como .htaccess
- Manual de DirectAdmin 12.3: Abrir y utilizar phpMyAdmin
- ¿Cuál es el nombre de usuario, la contraseña y el nombre de la base de datos MySQL?
- Manual de DirectAdmin 18.6: Error al establecer una conexión con la base de datos
- wp-config.php (developer.wordpress.org, en inglés): https://developer.wordpress.org/advanced-administration/wordpress/wp-config/
