Wp Configs

wp-config.php
es el archivo de configuración central de WordPress. Aunque muchas instalaciones funcionan sin tocarlo, dominar este archivo te permite mejorar la seguridad, rendimiento y flexibilidad del sitio — especialmente si gestionas múltiples entornos o proyectos a escala.
En esta entrada veremos qué es wp-config.php
, cómo configurarlo correctamente, ajustes recomendados para producción y desarrollo, y ejemplos prácticos.
¿Qué es wp-config.php
y dónde está?
wp-config.php
contiene las constantes y parámetros que WordPress usa para conectarse a la base de datos y comportarse según el entorno. Se encuentra en la raíz de la instalación de WordPress (junto a wp-content
, wp-includes
y wp-admin
). Si no existe, WordPress genera uno durante la instalación usando wp-config-sample.php
.
Elementos esenciales del archivo
Los parámetros mínimos que verás siempre son:
// Configuración de la base de datos
define('DB_NAME', 'nombre_db');
define('DB_USER', 'usuario_db');
define('DB_PASSWORD', 'password_db');
define('DB_HOST', 'localhost');
// Prefijo de tablas
$table_prefix = 'wp_';
// Claves de seguridad (salts)
// Genera valores en: https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY', '...');
define('SECURE_AUTH_KEY', '...');
// ... y el resto
// Idioma y ruta
define('WPLANG', '');
/* ¡Eso es todo, deja de editar! */
Consejo rápido: nunca subas
wp-config.php
con contraseñas reales a repositorios públicos.
Ajustes recomendados para seguridad
- Mover
wp-config.php
fuera del webroot cuando tu servidor lo permita (por ejemplo, un nivel arriba depublic_html
). WordPress lo sigue buscando. - Desactivar edición de temas/plugins desde el panel:
define('DISALLOW_FILE_EDIT', true);
- Forzar SSL en el admin:
define('FORCE_SSL_ADMIN', true);
- Limitar los intentos de logueo mediante plugins o configuraciones a nivel de servidor.
- Salts únicos: usa el endpoint oficial para generar salts seguros:
https://api.wordpress.org/secret-key/1.1/salt/
. - Desactivar la ejecución de PHP en uploads (añadir
.htaccess
dentro dewp-content/uploads
):
<Files *.php>
deny from all
</Files>
Ajustes para rendimiento y cache
- Habilitar cache de objetos persistente (Redis o Memcached):
define('WP_CACHE', true);
define('WP_REDIS_HOST', '127.0.0.1');
- Ajustes de memoria y autoload:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
- Control de revisiones de entradas para reducir la bloat de la base de datos:
define('WP_POST_REVISIONS', 5); // o false para desactivar
- Desactivar cron real de WP en favor de cron del servidor:
define('DISABLE_WP_CRON', true);
Luego programar wp-cron.php
con crontab.
Desarrollo vs Producción: variables de entorno
Mantén las credenciales y flags (debug, cache) fuera del repositorio usando variables de entorno o un .env
. Ejemplo con vlucas/phpdotenv
o oscarotero/wp-config-vite
:
// Cargar variables de entorno con dotenv (ejemplo conceptual)
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
define('DB_NAME', $_ENV['DB_NAME']);
define('DB_USER', $_ENV['DB_USER']);
// etc.
define('WP_DEBUG', filter_var($_ENV['WP_DEBUG'], FILTER_VALIDATE_BOOLEAN));
Consejo: en producción WP_DEBUG
debe estar en false
.
Ejemplo de wp-config.php
moderno (resumido)
<?php
// Cargar .env si existe (ejemplo simple)
if (file_exists(__DIR__ . '/.env')) {
$lines = parse_ini_file(__DIR__ . '/.env');
foreach ($lines as $k => $v) {
putenv("$k=$v");
$_ENV[$k] = $v;
}
}
define('DB_NAME', getenv('DB_NAME') ?: 'mi_db');
define('DB_USER', getenv('DB_USER') ?: 'mi_user');
define('DB_PASSWORD', getenv('DB_PASSWORD') ?: 'mi_pass');
define('DB_HOST', getenv('DB_HOST') ?: 'localhost');
define('AUTH_KEY', '...');
// otras salts...
define('WP_DEBUG', getenv('WP_DEBUG') === 'true');
define('DISALLOW_FILE_EDIT', true);
define('WP_POST_REVISIONS', 5);
define('WP_MEMORY_LIMIT', '256M');
$table_prefix = 'wp_';
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
Versionado y despliegue
- No subas contraseñas al repositorio. Versiona una plantilla
wp-config.example.php
sin credenciales. - Gestiona diferencias entre entornos con scripts de despliegue (capistrano, deployer, GitHub Actions) que inyecten variables de entorno durante la publicación.
- Usa herramientas de migración de DB (WP-CLI, WP Migrate DB Pro) para mover datos entre entornos.
Comprobaciones y mantenimiento
- Añade controles que verifiquen que
WP_DEBUG
no esté activado en producción. - Revisa permisos de archivo:
wp-config.php
normalmente 640 o 600 (según alojamiento). - Realiza backups periódicos del
wp-config.php
en un lugar seguro (no público).
Preguntas frecuentes (FAQ)
¿Puedo usar variables de entorno en cualquier hosting? Depende: en compartidos a veces no, pero en VPS/Cloud o plataformas modernas (Heroku, Cloudways, PaaS) sí.
¿Qué pasa si borro las salts? Las cookies y sesiones se invalidarán, forzando re-logins. Es útil cambiar salts si sospechas que una clave fue comprometida.
¿Debo tener WP_DEBUG
en true en staging? Sí, en staging y desarrollo sí — siempre que el staging no sea accesible públicamente.
Conclusión
wp-config.php
es una palanca poderosa: con unos pocos ajustes puedes endurecer la seguridad, mejorar el rendimiento y simplificar despliegues. Implementa variables de entorno, mantén el archivo fuera de repositorios públicos y adapta las constantes según tus entornos.
En veselin.es exploramos las curiosidades más increíbles del mundo. Imágenes creadas con IA y ConfyUI y asignadas aleatoriamente: Wp Configs. También ciencia, historia, tecnología, cultura, fenómenos inexplicables y datos que te dejarán con la boca abierta. Si te apasiona aprender cosas nuevas cada día, ¡este blog es para ti!
🧠 Aviso: Las entradas de esta web han sido generadas automáticamente con ayuda de inteligencia artificial. Las imágenes mostradas pueden no representar con exactitud la realidad y deben considerarse parte del proceso creativo.
Este sitio es un experimento con fines educativos y de aprendizaje. ¡Disfruta del arte, la tecnología y la creación digital!
Descargo de responsabilidad: Las imágenes presentadas en esta web han sido generadas exclusivamente mediante herramientas de inteligencia artificial. No corresponden a fotografías reales ni a representaciones de personas existentes. Los títulos o nombres de archivo son generados automáticamente y no implican ninguna relación con entidades, marcas o individuos reales. Si tienes dudas o consideras que alguna imagen vulnera derechos, puedes contactarnos para su revisión o retirada.