Uno de los archivos más importantes en WordPress es el fichero wp-config.php. Este archivo se encuentra en la raíz de WordPress y contiene los detalles de configuración básicos del sitio web, tales como la información de conexión de la base de datos y la visualización de errores.
Sin embargo este fichero también nos permitirá agregar un amplio abanico de parámetros y variables relativas a la seguridad del sitio, la edición de los contenidos, rendimiento, etc.
Contenidos
El fichero wp-config.php por defecto
Cuando descargamos los ficheros de WordPress desde su sitio oficial e iniciamos el proceso de instalación veremos que lo primero que se nos solicita son los datos de conexión a la base datos y el prefijo de las tablas.
Toda esta información que introducimos será almacenada en nuestro fichero wp-config.php de la siguiente forma para que WordPress pueda funcionar correctamente.
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'nombre_de_usuario' );
/** MySQL database password */
define( 'DB_PASSWORD', 'contraseña' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
/** Authentication unique keys and salts.
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
/** WordPress database table prefix.
$table_prefix = 'wp_';
/** For developers: WordPress debugging mode.
define( 'WP_DEBUG', false );
/* Add any custom values between this line and the "stop editing" line. */
/* That's all, stop editing! Happy publishing. */
Como puedes ver, WordPress, ha añadido además, un poco de información a mayores en este fichero, vamos a explicar para qué sirve toda esta información.
Configuración de MySQL en WordPress
Estos datos se introducen en el momento de la instalación de WordPress, sin embargo, cuando hacemos una migración de la base de datos necesitaremos cambiar esta información en el fichero wp-config.php
- DB_NAME. Indica base de datos.
- DB_USER. Indica el usuario que se conecta a la base de datos
- DB_PASSWORD. Indica la contraseña de acceso a la base de datos
- DB_HOST. Indica el nombre de servidor donde se aloja la base de datos
- DB_CHARSET. Indica la codificación de caracteres. Lo más habitual suele ser UTF8.
Claves de autentificación, SALT
Estas claves se utilizan para proteger las sesiones y las cookies de tu WordPress y se generan de forma automática cuando se realiza la instalación de WordPress.
Es uno de los aspectos de seguridad más básicos del sitio y solo necesitarás cambiarlas en caso de tener una brecha de seguridad en el sitio(malware, suplantación de identidad, robo de información, etc.)
Si precisas unas claves nuevas, la API de WordPress pone a tu disposición un generador aleatorio en esta URL, cada vez que visites o recargues la URL tendrás unas nuevas claves que puedes añadir a tu sitio.
Prefijo de la base de datos de WordPress
Un prefijo de tablas diferente al por defecto “wp_” supone un aumento en la seguridad de tu WordPress, debido a que los atacantes les costará más encontrar las tablas de tu WordPress. Es necesario introducir el prefijo que queremos durante la instalación del sitio, una vez instalado es difícil cambiarlo y conseguir WordPress siga funcionando con normalidad.
Otra de las funciones que tiene el prefijo es la posibilidad de tener dos o más WordPress funcionando en la misma base de datos, siempre que tengan diferentes prefijos. No obstante, no es una solución óptima para el rendimiento y es recomendable separar las instalaciones en bases de datos diferentes.
Modo debug en WordPress y personalización
Este modo se utiliza principalmente en entornos de desarrollo de WordPress, para localizar errores en el código, plantillas, plugins, etc,
Para activarlo tendríamos simplemente cambiamos la palabra false por true. Recuerda tener esta opción desactivada en entornos de producción para evitar mostrar a los usuarios información sobre rutas o problemas del sitio a tus visitantes.
define('WP_DEBUG', true);
Adicionalmente, el modo debug permite personalizaciones para ajustarse más al tipo de errores que queremos visualizar y como almacenarlos.
- DEBUG para JavaScript y CSS
define( 'SCRIPT_DEBUG', true );
- Almacenar los mensajes de DEBUG en un fichero LOG TXT
define( 'WP_DEBUG_LOG', true );
- Visualizar en pantalla todos los errores del modo DEBUG
define( 'WP_DEBUG_DISPLAY', true );
Recuerda que para que funcionen las opciones de personalización debes tener el modo debug activo.
Parámetros avanzados de wp-config.php
Los siguientes parámetros no están incluidos en el wp-config.php y nos servirán para personalizar nuestro WordPress, además de mejorar su seguridad y rendimiento.
Actualizaciones
En este apartado podremos ver algunas de las opciones más empleadas cuando queremos manejar el comportamiento de las actualizaciones.
Configuración FTP
Cuando existe algún problema con los permisos del sitio, por requerimientos específicos de algún plugin o en caso de algunas actualizaciones, es posible que WordPress precise los datos de conexión al FTP para manejar los ficheros del sitio. Estos datos se pueden definir de la siguiente manera:
define('FTP_USER', 'usuarioFTP'); define('FTP_PASS', 'contraseñaFTP'); define('FTP_HOST', 'servidor');
Con estos tres datos básicos es suficiente, no obstante, se pueden añadir más especificaciones para el manejo de ficheros como pueden ser las siguientes.
define('FS_METHOD', 'ftpext'); define('FTP_BASE', '/home/nombrededominio/www'); define('FTP_SSL', false);
En la mayoría de los casos no precisarás añadir esta información si los permisos del WordPress están correctos. Adicionalmente si algún plugin precisa los datos de acceso, lo habitual es que solicite los datos de conexión FTP en las opciones de configuración del plugin en lugar de añadirlo manualmente.
Actualizaciones automáticas del core de WordPress
Este parámetro nos permite configurar el comportamiento de WordPress cuando están disponibles nuevas versiones.
Para activar todas las actualizaciones de core de forma automática usaremos esta línea.
define( 'WP_AUTO_UPDATE_CORE', true );
Si por el contrario queremos que no se actualice nunca de forma automática, podemos desactivarlas.
define( 'WP_AUTO_UPDATE_CORE', false );
Y si solo queremos que se actualice de forma automática cuando salen versiones menores podemos usar esta línea
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
Nuestra recomendación es mantener siempre el WordPress actualizado a la última versión disponible. Sin embargo, las actualizaciones automáticas pueden provocar problemas con plugins o plantillas del sitio. Es mejor las actualizaciones de forma manual, teniendo siempre un backup a mano. Este sistema de actualizaciones automatizado está pensado para blogs personales o sistemas no críticos.
Desactivar actualizaciones automáticas
Por defecto WordPress, tanto su core como plugins, plantillas y otras funciones se actualizan de forma automática cuando salen versiones menores, esto no suele ser un problema, ya que normalmente las actualizaciones menores corrigen errores de funcionamiento o de seguridad.
Sin embargo, podemos necesitar que WordPress se ejecute con unas versiones muy concretas y que no se actualice, para ello podemos añadir la siguiente linea en el wp-config.php
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Edición de contenidos de WordPress
Estas opciones están orientadas a tener un mayor control de las herramientas de redacción de tu WordPress.
Limitar o deshabilitar las revisiones
Con el fin de ahorrarnos algo de espacio en la base de datos se pueden limitar las revisiones que WordPress mostrará para cada una de tus entradas o páginas
define( 'WP_POST_REVISIONS', 5 );
Con este cambio solo se mostrarán las 5 últimas revisiones.
Si prefieres que las entradas no tengan revisiones puedes poner la siguiente línea
define( 'WP_POST_REVISIONS', false );
No es muy recomendable desactivarlas, sobretodo en un entorno en el que trabajan múltiples personas en el contenido de la web, con las revisiones desactivadas será más difícil saber quien ha efectuado cambios.
Cambiar el tiempo de autoguardado
Por defecto, WordPress guarda los cambios en el editor cada minuto, este comportamiento puede cambiarse con la siguiente línea.
define( 'AUTOSAVE_INTERVAL', 60);
El valor indicado sería en segundos, y puede resultarnos muy útil cambiarlo o aumentarlo cuando existen múltiples usuarios trabajando en el contenido y queremos evitar un exceso de peticiones.
Sobrescribir imágenes después de editarlas en WordPress
Cuando editamos imágenes dentro de WordPress veremos que siempre se crea un nuevo fichero con las modificaciones realizadas, este comportamiento se puede cambiar utilizando la siguiente línea
define( 'IMAGE_EDIT_OVERWRITE', true );
Vaciar papeleras cada cierto tiempo
Podemos definir en días cada cuanto tiempo queremos que se vacíen las papeleras de WordPress, de esta manera evitamos tener un exceso de contenido acumulado.
define( 'EMPTY_TRASH_DAYS', 30 );
Si deseas que los ficheros directamente no pasen por la papelera puedes poner el valor 0.
Opciones de seguridad
Bloquear el acceso desde otros dominios o hotlinking
Puedes evitar que otras páginas puedan hacer uso del contenido de tu sitio, generando con ello una carga extra para la web utilizando la siguiente directiva.
define( 'WP_HTTP_BLOCK_EXTERNAL', true );
Adicionalmente en conjunto con la línea anterior puedes permitir que determinados sitios puedan hacer uso del contenido de tu web separándolos por comas.
define( 'WP_ACCESSIBLE_HOSTS', ' sitiopermitido.com, otrositiopermitido.es' );
Establecer permisos de archivos y carpetas
Aunque por defecto nuestros hostings ya aplican unos permisos suficientemente restrictivos a ficheros y directorios, con esta directiva puedes tener un control más exhaustivo y personalizado, el formato que emplea es similar al comando chmod de linux.
define( 'FS_CHMOD_DIR', ( 0751 & ~ umask() ) ); define( 'FS_CHMOD_FILE', ( 0644 & ~ umask() ) );
Con estas líneas habremos establecido unos permisos 751 para directorios y 644 para ficheros de nuestro WordPress.
Desactivar modificaciones en plantillas y plugins
Estas directivas se usan para aumentar la seguridad del sitio y evitar que si alguien pudiese acceder al administrador del sitio pueda modificar, instalar o eliminar la plantilla o plugins y tampoco permitir el acceso al editor de código.
Esta línea desactiva el editor de código.
define( 'DISALLOW_FILE_MODS', true );
Esta otra desactiva la instalación, modificación o borrado de plantillas y plugins.
define( 'DISALLOW_FILE_EDIT', true );
Permitir subida de ficheros con extensiones poco habituales
Esta directiva se usa para permitir la subida de ficheros con extensiones poco habituales, que por defecto en WordPress acaban dando el error “Lo Siento, Este Tipo de Archivo No Está Permitido por Razones de Seguridad”
Esta línea desactiva la limitación de extensiones para wordpress.
define('ALLOW_UNFILTERED_UPLOADS', true);
Ten en cuenta que no necesitarás esta opción si únicamente subes ficheros con las extensiones siguientes:
- Imagenes: .jpg, .jpeg, .png, .gif, .ico
- Videos: .mp4, .m4v, .mov, .wmv, .avi, .mpg, .ogv, .3gp, .3g2
- Documentos: .pdf, .doc, .ppt, .pptx, .pps, .ppsx, .odt, .xls, .xlsx, .psd
- Audio: .mp3, .m4a, .ogg, .wav
Rendimiento
Aunque existen multitud de plugins que se encargan de manejar la mayoría de estas opciones, podemos hacemos modificaciones de forma manual en nuestro fichero wp-config.php para aumentar el rendimiento o el consumo de memoria.
Concatenar JavaScript en la zona de administración
Esta opción nos permite concatenar en un solo archivo todo el Javascript de la parte de administración de WordPress. Conseguiremos con ello una ejecución más rápida en la edición del sitio.
define( 'CONCATENATE_SCRIPTS', true );
Comprimir JavaScript
Esta directiva nos permitirá comprimir el JavaScript de nuestro sitio, consiguiendo con ello un ligero aumento en el rendimiento del sitio y reduciendo el consumo de memoria.
define( 'COMPRESS_SCRIPTS', true );
Comprimir CSS
Del mismo modo, también podemos comprimir las hojas de estilo CSS con esta línea.
define( 'COMPRESS_CSS', true );
Forzar compresión GZIP
También podemos forzar la compresión del contenido en formato GZIP consiguiendo con ello un poco más de rendimiento utilizando esta línea.
define( 'ENFORCE_GZIP', true );
Habilitar cache
Muchos plugins de cacheado como por ejemplo W3 Total Cache precisan que esté habilitado el uso de advanced-cache.php en el fichero wp-config.php. La mayoría ya añaden automáticamente esta línea.
define( 'WP_CACHE', true );
Reparar la base de datos MySQL de WordPress
En el caso de que no tengamos acceso a la base de datos podemos utilizar el sistema que tiene WordPress de análisis y reparación de base de datos, para ello basta con añadir este parámetro al wp-config.php.
define( 'WP_ALLOW_REPAIR', true );
Esto nos permite habilitar el sistema, y si queremos hacer uso del sistema de análisis y reparación de la base de datos, tan solo tendríamos que poner lo siguiente a continuación del dominio en la barra del navegador:
/wp-admin/maint/repair.php
Veremos al acceder una ventana que nos permitirá reparar y optimizar las tablas de nuestra base de datos.
Desactivar el WP-CRON
En algunas ocasiones las tareas programadas de WordPress pueden causar problemas de rendimiento ya que estas tareas se ejecutan cada vez que se realiza una petición a una página en concreto. Es decir, se ejecutan más procesos sin necesidad. Para verificar o descartar que el problema puede estar relacionados con estas tareas, podemos desactivar esta función con la siguiente directiva.
define( 'DISABLE_WP_CRON', true );
Una vez hecho esto desde el wp-config.php, podemos activar las trareas del WordPress mediante un cron desde el panel de control para evitar sobrecargas inecesarias. Lo tendríamos que hacer con el siguiente contenido:
wget -q -O - https://example.com/wp-cron.php?doing_wp_cron
Ten en cuenta que tendríamos que reemplazar example.com por tu dominio.
Rutas y dominio
Con el fichero wp-config.php de WordPress también podrás el nombre de dominio asociado a tu web o habilitar opciones especiales como multisite.
Cambiar URL y Home
En caso de cambiar nuestro nombre de dominio, podemos indicar en el fichero wp-config.php cual es el nuevo dominio. Estos valores tendrán prioridad sobre los establecidos a nivel de base de datos.
define( 'WP_HOME', 'https://minuevodominio.com' ); define( 'WP_SITEURL', 'https://minuevodominio.com' );
Habilitar WordPress Multisite
Si queremos manejar diferentes blogs desde el mismo panel de administración, WordPress cuenta con la opción de multisite.
define( 'WP_ALLOW_MULTISITE', true );
Una vez añadida esta línea, cuando accedamos a la parte de administración de nuestro sitio contaremos con las nuevas herramientas para crear y administrar los diferentes blogs.
Sistema de archivos
Estas opciones están enfocadas a cambiar el comportamiento de WordPress a la hora de almacenar información.
Cambiar la localización de la carpeta de plugins
Si deseamos guardar los plugins en un directorio diferente al por defecto, podemos usar esta línea en nuestro fichero wp-config.php. Recomendamos hacer estos cambios antes de empezar a trabajar con el WordPress.
define( 'WP_PLUGIN_URL', 'https://ejemplo.com/midirectorio/de/plugins' );
Tan solo será necesario cambiar la URL de este ejemplo por la ruta donde quieras almacenar los plugins en tu web.
Cambiar la localización de la carpeta wp-content
Con esta opción podemos cambiar el lugar donde WordPress almacenará la mayoría de los contenidos
define( 'WP_CONTENT_URL', 'https://ejemplo.com/midirectorio/de/contenidos' );
Cambiar la localización de la carpeta de themes
También podemos cambiar el lugar donde se almacenan tus plantillas y temas con esta opción.
$theme_root = WP_CONTENT_DIR . '/mistemas';
Ten en cuenta que con esta línea estamos indicando que el directorio “mistemas” estará dentro del directorio de wp-content o el lugar donde lo tengamos definido con la opción anterior.
Cambiar la localización de la carpeta uploads
Por último, podremos definir la ruta donde se almacenan los contenidos que subimos desde el gestor de contenidos de WordPress con esta directiva.
define( 'UPLOADS', 'midirectorio/de/subidas' );
Resumen
Como puedes ver, el fichero wp-config.php de WordPress permite configurar prácticamente todos los aspectos de nuestro WordPress, sin embargo, existen muchas otras opciones que no hemos mencionado. Si deseas seguir investigando, puedes encontrar más opciones en este artículo de la web oficial de WordPress.