La "famosa instalación de 5 minutos" es un eslogan de marketing, no un estándar profesional. Una instalación de WordPress por defecto es ruidosa, no optimizada y a menudo insegura. Como desarrolladores, no solo "instalamos" WordPress; lo **provisionamos**. Esta guía cubre las constantes de configuración esenciales y las técnicas de blindaje que deberian estar en tu boilerplate para cada proyecto de clientes en 2026.
Descubre más sobre servicios de seguridad WordPress en WPPoland.
1. El poder de wp-config.php
Este es el cerebro de tu instalación. Deja de dejarlo en sus valores por defecto. Cada linea en este archivo es una decision de ingenieria que afecta la seguridad, el rendimiento y la estabilidad de tu sitio.
Control de entorno
Desde WordPress 5.5, WP_ENVIRONMENT_TYPE es estándar. Usalo para prevenir que errores de desarrollo se filtren a producción.
// En wp-config.php
define( 'WP_ENVIRONMENT_TYPE', 'production' ); // 'local', 'development', 'staging', 'production'
Luego en tu código:
if ( wp_get_environment_type() === 'production' ) {
// Habilitar Cache, Deshabilitar Errores
}
Esta constante es fundamental porque permite que tu código se comporte de manera diferente según el entorno. En desarrollo, puedes mostrar errores y desactivar cache. En producción, todo se blinda automáticamente.
Seguridad reforzada
Previene que los clientes (o hackers) rompan el sitio a través del escritorio. Estas tres constantes son obligatorias en cada proyecto profesional:
// Deshabilitar Editor de Archivos (Editor de Temas/Plugins)
define( 'DISALLOW_FILE_EDIT', true );
// Prevenir Instalacion/Actualizacion de Plugins/Temás (Bueno para despliegues inmutables)
define( 'DISALLOW_FILE_MODS', true );
// Forzar SSL en Admin
define( 'FORCE_SSL_ADMIN', true );
DISALLOW_FILE_EDIT es la más crítica. Sin ella, cualquier usuario con rol de administrador puede inyectar código PHP arbitrario en los archivos del tema o plugin directamente desde el escritorio. Esto es un vector de ataque comun y una fuente frecuente de errores humanos.
DISALLOW_FILE_MODS va un paso más alla y previene cualquier modificacion de archivos, incluyendo actualizaciones automáticas. Esto es ideal para despliegues basados en Git/Composer donde las actualizaciones se gestionan a través del pipeline de CI/CD.
Revisiones de publicaciónes
Asesino del hinchamiento de la base de datos. Realmente necesitas 100 versiones de la página “Acerca de nosotros”?
define( 'WP_POST_REVISIONS', 10 ); // Mantener ultimás 10
// O
define( 'WP_POST_REVISIONS', false ); // Deshabilitar completamente (No recomendado)
Constantes adicionales de seguridad
// Forzar método de actualización directo (evitar FTP)
define( 'FS_METHOD', 'direct' );
// Cambiar la tabla de prefijo por defecto
$table_prefix = 'wp_8x7k_'; // Nunca usar 'wp_' por defecto
// Deshabilitar la carga de archivos no filtrados
define( 'ALLOW_UNFILTERED_UPLOADS', false );
// Limitar memoria PHP
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // Para admin
2. Depuracion profesional
Nunca muestres errores en el frontend. Registralos en un archivo seguro.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' ); // Mover log fuera de la raiz web!
define( 'WP_DEBUG_DISPLAY', false );
// Registrar consultas SQL para depurar rendimiento (Desactivar en producción!)
define( 'SAVEQUERIES', false );
Por que mover el log fuera de la raiz web
El archivo de log por defecto se crea en wp-content/debug.log. Este archivo es accesible publicamente en la mayoria de las configuraciónes de servidor. Cualquier persona puede acceder a tusitio.com/wp-content/debug.log y ver errores PHP que pueden revelar rutas del servidor, nombres de tablas de base de datos, claves API y otra información sensible.
Mover el log a /tmp/ o a un directorio fuera de la raiz web elimina este riesgo de seguridad por completo.
Herramientas de depuracion avanzadas
- Query Monitor: Plugin esencial para identificar consultas SQL lentas, hooks activos, HTTP requests y uso de memoria
- WP-CLI debug:
wp eval 'var_dump(WP_DEBUG);'para verificar configuración - Xdebug + VSCode: Para depuracion paso a paso en desarrollo local
3. Limpiando el “bloat del core”
WordPress viene con funciones que el 90% de los sitios empresariales no necesitan: Emojis, oEmbeds y XML-RPC. No instales un plugin para deshabilitarlas. Crea un Must-Use Plugin (wp-content/mu-plugins/lean-core.php).
<?php
/* Plugin Name: Lean Core */
// 1. Deshabilitar Emojis (Ahorra una solicitud HTTP)
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
// 2. Deshabilitar XML-RPC (Seguridad)
add_filter( 'xmlrpc_enabled', '__return_false' );
// 3. Eliminar Version de WP (Seguridad por oscuridad)
remove_action( 'wp_head', 'wp_generator' );
// 4. Deshabilitar Feeds RSS (Si construyes un sitio brochure)
// function wppoland_disable_feed() {
// wp_die( 'No hay feed disponible, visita nuestra página principal!' );
// }
// add_action('do_feed', 'wppoland_disable_feed', 1);
// 5. Deshabilitar pingbacks (previene ataques DDoS)
add_filter( 'xmlrpc_methods', function( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
} );
// 6. Eliminar enlaces innecesarios del head
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'wp_shortlink_wp_head' );
remove_action( 'wp_head', 'rest_output_link_wp_head' );
Por que un MU Plugin y no un plugin normal
Los Must-Use Plugins (mu-plugins) tienen ventajas criticas sobre plugins normales:
- Siempre activos: No se pueden desactivar desde el escritorio
- Carga prioritaria: Se ejecutan antes que los plugins normales
- Sin actualizaciones automáticas: Control total del código
- Transparencia: Cada regla es visible y auditable en el repositorio Git
4. El “mito” de las sales
Conoces las claves de autenticación en wp-config.php:
define('AUTH_KEY', 'pon tu frase única aqui');
// ...
Hecho: Cambiar estas claves cierra inmediatamente la sesion de todos los usuarios. Es la “Opción Nuclear” si un sitio es hackeado. Todos los tokens de sesion existentes se invalidan al instante.
Consejo Pro: Automatiza su rotacion usando un script CLI o Vault si gestionas sitios empresariales. Regenera las sales al menos una vez al año o inmediatamente despues de cualquier incidente de seguridad.
Genera nuevas sales en: https://api.wordpress.org/secret-key/1.1/salt/
5. Configuración de base de datos optimizada
// Limpiar papelera automáticamente cada 7 dias (por defecto es 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Intervalo de autoguardado en segundos (por defecto es 60)
define( 'AUTOSAVE_INTERVAL', 120 );
// Reparar base de datos (usar temporalmente y luego desactivar)
// define( 'WP_ALLOW_REPAIR', true );
6. Resumen y checklist
Antes de lanzar cualquier proyecto:
- Establece
WP_ENVIRONMENT_TYPEa production - Establece
DISALLOW_FILE_EDITa true - Limita
WP_POST_REVISIONSa un número razonable (5-10) - Mueve
WP_DEBUG_LOGa una carpeta privada fuera de la raiz web - Deshabilita Emojis/XML-RPC via código en mu-plugins
- Fuerza SSL en toda el area de administración
- Personaliza el prefijo de tabla para seguridad adicional
- Regenera sales de seguridad despues de cada incidente
Una instancia WordPress bien configurada es silenciosa, segura y rápida. Cada constante que estableces es una capa de defensa, cada optimización es tiempo de respuesta ganado, y cada linea de bloat eliminada es una superficie de ataque reducida.
Necesitas una auditoria de seguridad WordPress profesional o ayuda con optimización de velocidad? Contactanos.


