Wp-config.php es el archivo de configuracion de WordPress y contiene información sensible e importante para la identidad del sitio y su funcionamiento correcto.
¿Qué tal público?
El gestor funcionará de modo correcto sólo con introducir los datos imprescindibles de configuración.
Sin embargo, este archivo ofrece muchas otras opciones complementarias relativas a la seguridad del sitio web, su optimización y más.
El archivo wp-config-sample.php
Es el archivo guía que ofrece cualquier instalación de WordPress.
En él se muestran todas las secciones imprescindibles para ejecutar la instalación del gestor en el servidor.

Es fundamental respetar el orden de las constantes (DEFINE) y las instrucciones php del fichero wp-config.php final, tal y como aparecen en este archivo de ejemplo.
El lugar adecuado para añadir más constantes y funciones sería justo antes de la línea:
/* ¡Eso es todo, deja de editar! Feliz blogging */
Es el mensaje de despedida y a la vez implica que no se debe editar ni modificar nada por debajo de esa línea de código.
Cómo editar el archivo wp-config.php
Pues de modo automático o manual:
AUTO – Lo ejecutará el mismo instalador de WordPress, durante su instalación, en base a una serie de datos que nos irá solicitando.
MANUAL – Editando el fichero wp-config-sample.php de ejemplo o haciendo una copia del mismo con un editor de texto o, incluso, desde el editor de código de cPanel.
Sustituimos los datos por defecto por los de conexión con nuestra base de datos:
- Nombre de la base, usuario y password,
- Prefijo para la base de datos,
- Host de MySQL,
- Codificación y cotejamiento.
Los tres últimos no requieren ser editados para una instalación estándar.
Introducidos los datos, guardamos el archivo como wp-config.php.
Estas acciones ya quedaron descritas en el artículo Tutorial Bases de Datos MySQL en cPanel
Las claves únicas de autentificación
Son un control de seguridad para prevenir intentos de acceso fraudulentos al fichero y con él a las claves de acceso al sitio web.
Es conveniente cambiar estas claves de vez en cuando, pues con ello se cierran todas las sesiones de los usuarios conectados.
Un buen plugin de seguridad como Wordfence Security permite hacerlo desde su panel, pero también podemos cambiarlos manualmente por nosotros mismos.
Para ello enlazamos con la dirección que se indica en el archivo, https://api.wordpress.org/secret-key/1.1/salt/, y sustituimos todas las líneas por las que te ofrezca este servicio de creación aleatoria de claves secretas.
Modo DEBUG de depuración
En el archivo wp-config.php, la línea para activar el modo de depuración está inactiva por defecto.
Si deseamos que WordPress informe de cada error mientras construímos la website debemos cambiar su valor por defecto (false) y escribir true, así:
define(‘WP_DEBUG’, true);
También se puede llevar un registro de dichos errores en un archivo debug.log, en la carpeta wp-content:
define ( ‘WP_DEBUG_LOG’, true);
Activado este registro, puede no ser conveniente mostrar los errores en pantalla. Lo evitaremos añadiendo esta otra línea de código:
define ( ‘WP_DEBUG_DISPLAY’, false);
Algunos ajustes avanzados en el archivo wp-config.php
Con los ajustes imprescindibles WordPress funcionará de modo correcto pero hay muchas más acciones importantes que podemos llevar a cabo editando.
Estas son algunas:
Cambiar la ubicación de la carpeta wp-content
Añadir estas líneas de código para cambiar la ubicación donde se guardan plugins, temas y otros archivos.
Con ruta relativa:
define( ‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/mi-carpeta-de-contenido’ );
Con ruta absoluta:
define( ‘WP_CONTENT_URL’, ‘https://misitio.com/mi-carpeta-de-contenido’ );s
Debes poner la ruta original en lugar de la del ejemplo después de crear la carpeta con tu identificador.
Cambiar de ubicación sólo la carpeta con los plugins
Ruta relativa:
define( ‘WP_PLUGIN_DIR’, dirname(__FILE__) . ‘/mis-plugins’ );
Ruta absoluta:
define( ‘WP_PLUGIN_URL’, ‘https://misitio.es/mis-plugins’ );
Aumentar el límite de memoria de PHP
define(‘WP_MEMORY_LIMIT’, ‘256M’);
Puedes escribir el límite de memoria necesitado: 64M, 128M, 256M.
Si no funciona tendrás que acudir a la edición del archivo php.ini, si lo permite el administrador o hablar con tu proveedor para que te cambie el límite desde el servidor.
Para conocer un poco más a fondo este archivo tan importante, está el artículo Archivo php.ini no olvidar la espada para batirse en duelo.
Desactivar XML-RPC
El protocolo XML-RPC, utilizado por plugins como JetPack para conectar con los servicios de WordPress.com, puede ser una brecha de seguridad.
Si tienes claro que no lo necesitas desactívalo añadiendo el siguiente filtro tras la línea require_once(ABSPATH . ‘wp-settings.php’); :
add_filter(‘xmlrpc_enabled’, ‘__return_false’);
Evitar la instalación de los temas y plugins de WordPress por defecto
define( ‘CORE_UPGRADE_SKIP_NEW_BUNDLED’, true );
Eliminar o especificar el nº de las revisiones de artículos o posts
Si no necesitas guardar ninguna revisión:
define(‘WP_POST_REVISIONS’, false);
Si quieres personalizar su número, por ejmplo, se guarden sólo 3 revisiones para no disponer de tanta basura en las tablas:
define(‘WP_POST_REVISIONS’, 3);
El artículo Limpiar la base de datos de WordPress sin escoba ni plugins, enseña el modo de optimizar y limpiar estas revisiones.
Forzar los permisos de archivos y carpetas a los valores seguros
define( ‘FS_CHMOD_DIR’, ( 0755 & ~ umask() ) );
define( ‘FS_CHMOD_FILE’, ( 0644 & ~ umask() ) );
Cambiar periodo del vaciado de la papelera
Por defecto (30 días):
define( ‘EMPTY_TRASH_DAYS’, 7 );
Desactivar las actualizaciones auto en segundo plano
Para evitar que WordPress se actualice sólo:
define( ‘AUTOMATIC_UPDATER_DISABLED’, true );
Eliminar versiones de imágenes editadas
WordPress las guarda por si las necesitas en algún momento:
define( ‘IMAGE_EDIT_OVERWRITE’, true );
Forzar SSL en el acceso al sitio y la administración
Si tienes un certificado SSL (sería lo correcto actualmente) puedes forzar los accesos sólo para https:
define(‘FORCE_SSL_LOGIN’, true);
define(‘FORCE_SSL_ADMIN’, true);
Cambiar el intervalo del guardado auto
El editor de WordPress guarda los escritos cada poco tiempo. Si quieres cambiarlo, escribe el nuevo parámetro en segundos.
Así, para 5 minutos sería:
define(’AUTOSAVE_INTERVAL’, 300);
Activar la caché de objetos de WordPress
Antes de emprenderla con la complicada instalación de esos plugins mastodónticos de caché, prueba con la programada por defecto:
define( ‘WP_CACHE’, true );
Comprimir contenidos sin plugins de optimización
Para comprimir todo el contenido en archivos estáticos.
Las siguientes líneas de código, comprimen el CSS y los ficheros JavaScript, reúnen todos los JavaScript y fuerzan la carga de gzip; sin plugins:
define( ‘COMPRESS_CSS’, true );
define( ‘COMPRESS_SCRIPTS’, true );
define( ‘CONCATENATE_SCRIPTS’, true );
define( ‘ENFORCE_GZIP’, true );
Desactivar o controlar el servicio CRON de WordPress
Para prescindir del mismo:
define( ‘DISABLE_WP_CRON’, true );
Para ejecutarlo a voluntad el tiempo de espera:
define( ‘WP_CRON_LOCK_TIMEOUT’, 60 );
Bloquear peticiones desde URLs externas
Para bloquear cualquier petición desde una URL distinta a la de tu base de datos:
define( ‘WP_HTTP_BLOCK_EXTERNAL’, true );
Desactivar el editor interno de plugins y temas
Una medida importante en caso de accesos fraudulentos al administrador:
define( ‘DISALLOW_FILE_EDIT’, true );
Desactivar actualizaciones e instalación de temas y plugins
Evitará que, incluso el administrador, puedan actualizar o instalar temas o plugins desde el dashboard:
define( ‘DISALLOW_FILE_MODS’, true );
Estas han sido alguna de las opciones que permite la edición del archivo wp-config.php.
Naturalmente podemos adornar nuestro archivo de configuración hasta dejarlo de pasarela.
Sin embargo, como no lo protejamos de accesos indebidos seguro terminaremos encontrando alguna sorpresa desagradable.
La labor es muy sencilla editando el archivo .htaccess de tu instalación de WordPress con las siguientes líneas de código:
<Files wp-config.php>
order allow,deny
deny from all
</Files>
Como siempre, antes de realizar cambio alguno, copia de seguridad del fichero.
Podemos ampliar la información servida en el artículo con estos enlaces: