Oferta SiteGround Black Friday

wp-config.php: Todo lo que querías saber y mucho más (actualizado 2022)

wp-config.php guía completa

El archivo wp-config.php es uno de los más importantes de cualquier instalación de WordPress, de hecho es el archivo de configuración de WordPress, con información sensible e importante que hará que tu sitio funcione correctamente o incluso que no funcione en absoluto.

Es por ello que es de vital importancia conocerlo en profundidad, y eso es lo que quiero que aprendamos hoy ¿te animas?

wp-config.php guia completa

Índice de contenidos

El archivo wp-config.php por defecto

En cualquier instalación de WordPress existe un archivo de configuración por defecto, denominado wp-config-sample.php, que contiene las secciones fundamentales de todo archivo wp-config.php , estas:

<?php
/** 
 * Configuración básica de WordPress.
 *
 * Este archivo contiene las siguientes configuraciones: ajustes de MySQL, prefijo de tablas,
 * claves secretas, idioma de WordPress y ABSPATH. Para obtener más información,
 * visita la página del Codex{@link http://codex.wordpress.org/Editing_wp-config.php Editing
 * wp-config.php} . Los ajustes de MySQL te los proporcionará tu proveedor de alojamiento web.
 *
 * This file is used by the wp-config.php creation script during the
 * installation. You don't have to use the web site, you can just copy this file
 * to "wp-config.php" and fill in the values.
 *
 * @package WordPress
 */
// ** Ajustes de MySQL. Solicita estos datos a tu proveedor de alojamiento web. ** //
/** El nombre de tu base de datos de WordPress */
define('DB_NAME', 'nombredetubasededatos');
/** Tu nombre de usuario de MySQL */
define('DB_USER', 'nombredeusuario');
/** Tu contraseña de MySQL */
define('DB_PASSWORD', 'contraseña');
/** Host de MySQL (es muy probable que no necesites cambiarlo) */
define('DB_HOST', 'localhost');
/** Codificación de caracteres para la base de datos. */
define('DB_CHARSET', 'utf8');
/** Cotejamiento de la base de datos. No lo modifiques si tienes dudas. */
define('DB_COLLATE', '');
/**#@+
 * Claves únicas de autentificación.
 *
 * Define cada clave secreta con una frase aleatoria distinta.
 * Puedes generarlas usando el {@link https://api.wordpress.org/secret-key/1.1/salt/ servicio de claves secretas de WordPress}
 * Puedes cambiar las claves en cualquier momento para invalidar todas las cookies existentes. Esto forzará a todos los usuarios a volver a hacer login.
 *
 * @since 2.6.0
 */
define('AUTH_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('SECURE_AUTH_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('LOGGED_IN_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('NONCE_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('AUTH_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('SECURE_AUTH_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('LOGGED_IN_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('NONCE_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
/**#@-*/
/**
 * Prefijo de la base de datos de WordPress.
 *
 * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos.
 * Emplea solo números, letras y guión bajo.
 */
$table_prefix  = 'wp_';

/**
 * Para desarrolladores: modo debug de WordPress.
 *
 * Cambia esto a true para activar la muestra de avisos durante el desarrollo.
 * Se recomienda encarecidamente a los desarrolladores de temas y plugins que usen WP_DEBUG
 * en sus entornos de desarrollo.
 */
define('WP_DEBUG', false);
/* ¡Eso es todo, deja de editar! Feliz blogging */
/** WordPress absolute path to the Wordpress directory. */
if ( !defined('ABSPATH') )
	define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Algo fundamental de este archivo es que las constantes (define) y las instrucciones PHP vienen en un orden determinado que no puede/debe cambiarse así que si añades algo no interfieras en el orden del archivo por defecto.

El lugar adecuado para añadir más constantes y funciones sería justo antes de la línea siguiente:

/* ¡Eso es todo, deja de editar! Feliz blogging */

Y, por supuesto, tampoco añadas ni modifiques nada por debajo de esa línea, que para eso está el aviso.

A continuación iremos repasando cada sección del archivo.

Cómo se edita el archivo wp-config.php

El archivo wp-config.php se puede editar de dos modos fundamentalmente:

  1. Automáticamente: Ejecutando la instalación de WordPress, en cuyo caso el mismo proceso nos irá pidiendo la información necesaria para completarlo y lo creará.
  2. Manualmente: Editando el archivo wp-config-sample.php  (o haciendo una copia) con tu editor de código favorito o desde el editor de código de cPanel, y sustituyendo los datos por defecto por los de conexión con nuestra base de datos y prefijo (lo vital). Una vez hayamos introducido los datos lo guardaremos como wp-config.php . Recuerda guardar los cambios.

Información de la base de datos

La información más importante a añadir al archivo de configuración es la de la base de datos, pues en caso contrario WordPress no sabrá dónde almacenar la información de tu sitio en sus tablas, que como vimos en este artículo donde expliqué cuáles son y para qué sirve cada una, guarda toda tu actividad.

Este modelo es el que utiliza el instalador de WordPress para completar tu archivo definitivo wp-config.php , utilizando para ello la información de la base de datos que te solicita en el proceso de instalación, como en esta captura:

pantalla instalación WordPress información base de datos

Una vez completados los campos, en el archivo de configuración se añadirán a sus correspondientes líneas, estas:

// ** Ajustes de MySQL. Solicita estos datos a tu proveedor de alojamiento web. ** //
/** El nombre de tu base de datos de WordPress */
define('DB_NAME', 'nombredetubasededatos');
/** Tu nombre de usuario de MySQL */
define('DB_USER', 'nombredeusuario');
/** Tu contraseña de MySQL */
define('DB_PASSWORD', 'contraseña');
/** Host de MySQL (es muy probable que no necesites cambiarlo) */
define('DB_HOST', 'localhost');

Y más abajo del archivo es donde se introduce el prefijo:

/**
 * Prefijo de la base de datos de WordPress.
 *
 * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos.
 * Emplea solo números, letras y guión bajo.
 */
$table_prefix  = 'wp_';

Una vez completes el anterior paso de la instalación, si la información que incluiste es correcta podrás instalar WordPress. Por el contrario, si te equivocaste en algún dato no se podrá conectar y tendrás que volver a introducirlos correctamente.

Los datos a completar, por resumir, son los siguientes:

Instalación automática

  • DB_NAME: El nombre de la base de datos
  • DB_USER: El nombre de usuario con permisos para esa base de datos
  • DB_PASSWORD: La contraseña de acceso del usuario con permisos para esa base de datos.
  • DB_HOST: El host de tu base de datos (esta información te la debe facilitar tu proveedor de hosting, aunque en el 99% de las ocasiones será localhost). Si no lo sabes pregunta a tu proveedor. Por curiosidad, aquí tienes una lista de DB_HOST diferentes que puedes encontrar en algunos proveedores de hosting.
  • $table_prefix: El prefijo que llevarán las tablas de la base de datos para distinguirlas de otras tablas de otras instalaciones (si las hubiera) pues puedes usar una misma base de datos para varias instalaciones.

Truco extra: Si no consigues el dato de tu DB_HOST prueba a sustituir la línea por defecto por esta otra:

define('DB_HOST', $_ENV{DATABASE_SERVER});

Creación manual

Adicionalmente, si creas manualmente el archivo wp-config.php hay otros parámetros de la base de datos que, en ocasiones, puedes tener que modificar.

  • DB_CHARSET: Es el mapa de caracteres por defecto de tu base de datos. Normalmente será utf8  pero si tienes dudas consulta a tu proveedor de hosting. La instalación automática no te lo pide porque viene definido por defecto en tu base de datos. Si tuvieses problemas con la visualización de caracteres en tu idioma habla con tu proveedor para elegir el más adecuado y cámbialo manualmente.
  • DB_COLLATE: Se refiere al orden del mapa de caracteres, y normalmente no se añade ningún parámetro ya que lo asigna automáticamente MySQL así que mejor no lo toques, el proceso de instalación automático no te lo pide.

Nota importante: NUNCA uses el prefijo por defecto wp_  pues estarás facilitando la vida a posibles intrusos, ya que es «por defecto». En instalaciones que ya tengan el prefijo por defecto puedes cambiarlo manualmente o con plugins.

La información de conexión con la base de datos, si ya estuviese creada, está en tu panel de alojamiento, y en caso de duda deberás consultar con tu proveedor de hosting.

En caso contrario debes seguir estos pasos para crearla:

Crea la base de datos en tu cPanel

Ve a tu cPanel y accede a MySQL Bases de Datos

mysqul base de datos WordPress

A continuación ponle nombre a tu base de datos y pulsa el botón para crearla.

crear base de datos WordPress

Crea el usuario y su contraseña de la base de datos

Crear una base de datos en sí misma no es nada, es como un contenedor vacío al que nadie tiene acceso, así que hay que crear un usuario que pueda acceder a esa base de datos, como en cualquier sistema, que será el que indicaremos a WordPress.

Piensa en ella como en una hoja excel protegida pero sin saber el usuario y contraseña para poderla leer y modificar, lo que te digo, un cajón vacío, invisible e inútil.

Así que, sin salir de esa pantalla de MySQL Bases de datos de cPanel donde hemos creado la base de datos, crearemos un nuevo usuario, y su contraseña:

contraseña usuario base de datos WordPress

¿Hemos terminado? No. Si en el proceso de instalación de WordPress metes esa base de datos recién creada, y el usuario y contraseña recién creados tampoco podrás conectar ¿por qué?, porque pones información de una base de datos, y de un usuario con su contraseña, pero te falta un paso vital…

Asocia el usuario a la base de datos y dale privilegios

Efectivamente. Has creado la base de datos, y has creado el usuario y su contraseña, pero no le «has dicho» a MySQL que «ese» usuario tiene acceso a «esa» base de datos, simplemente existen, sin función ni relación entre ellos.

Este último paso también lo harás en la misma pantalla, como ves en la siguiente captura, simplemente eligiendo el usuario y la base de datos de su correspondiente desplegable:

añadir usuario base de datos WordPress

En cuanto pulses el botón «Añadir» te llevará a la siguiente pantalla, donde debes marcar TODOS LOS PRIVILEGIOS y a continuación pulsar el botón «Hacer cambios»

establecer privilegios usuario base de datos WordPress

Si no lo haces será como antes, tendrías un usuario que no podría hacer nada con esa base de datos, necesitas asignarle privilegios, y ante la duda dáselos todos  (el detalle de cada privilegio es para nota y matrícula, otro día lo veremos)

¡Y ya! Ahora sí que tenemos una base de datos y un usuario con contraseña con privilegios (permisos) para leer y escribir en la base de datos.

Al introducir esta información en nuestro archivo wp-config.php  a través del instalador de WordPress, o editando manualmente el archivo, estaremos dando permiso a WordPress para entrar en esa base de datos, con las credenciales del usuario que hemos creado, y así añadir la información en cada tabla: ajustes, entradas, comentarios, etc, etc, etc.

Nota importante: Ten en cuenta que el archivo wp-config.php es un fichero de texto, donde se podrán leer estas informaciones sensibles de la base de datos, así que es vital que lo protejas de miradas no deseadas como explicamos hace tiempo.

Las claves secretas de wp-config.php

En el archivo wp-config.php  encontrarás unas líneas algo crípticas denominadas «claves únicas de autentificación» que no son ni más ni menos que un control de seguridad mediante claves secretas.

/**#@+
 * Claves únicas de autentificación.
 *
 * Define cada clave secreta con una frase aleatoria distinta.
 * Puedes generarlas usando el {@link https://api.wordpress.org/secret-key/1.1/salt/ servicio de claves secretas de WordPress}
 * Puedes cambiar las claves en cualquier momento para invalidar todas las cookies existentes. Esto forzará a todos los usuarios a volver a hacer login.
 *
 * @since 2.6.0
 */
define('AUTH_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('SECURE_AUTH_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('LOGGED_IN_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('NONCE_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('AUTH_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('SECURE_AUTH_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('LOGGED_IN_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
define('NONCE_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
/**#@-*/

Y debes usarlas.

Para ello ve a la URL que se indica en el archivo: https://api.wordpress.org/secret-key/1.1/salt/

Y sustituye todas las líneas que vienen por las que te ofrezca este servicio de creación aleatoria de claves secretas, por ejemplo:

/**#@+
 * Claves únicas de autentificación.
 *
 * Define cada clave secreta con una frase aleatoria distinta.
 * Puedes generarlas usando el {@link https://api.wordpress.org/secret-key/1.1/salt/ servicio de claves secretas de WordPress}
 * Puedes cambiar las claves en cualquier momento para invalidar todas las cookies existentes. Esto forzará a todos los usuarios a volver a hacer login.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         '^#f{%>j_Z$_Vaf0y+pza+Xf5eOcp|KHEhgMu#/rAl,nDzxT-Y[$quq4Uh|(U[!R}');
define('SECURE_AUTH_KEY',  '6u%alTeSA`V|o>LF!i0y>|[email protected]`*AGrF!le}d');
define('LOGGED_IN_KEY',    ';NNO4Oc(,#5A:.g82`x*QfLjg;HH&Gx`GqkVa-rO%5?` J!Qs;,+Ax!,X:[I<!)E');
define('NONCE_KEY',        'y>*)LcE4lPmwK`|]M19kdL-x%20=&(hO6AH2S;DY$>D^q,BMcwV*pc%pT#iS]x<K');
define('AUTH_SALT',        'k-Brz9ua<2brkd/Hsj-?hZQ]-)@n.>v+k;vx6}xjmp4K,!-k=>T|+d%}M-qr+):q');
define('SECURE_AUTH_SALT', '!uL]4o}J;*u}#!u(s6;TDbVU6;+Mc-~`Rk^PX{Nu+Xxuf&S.mAU=+Eyb-1nV/p0M');
define('LOGGED_IN_SALT',   'i*zZQ`vfb<5A5#b,MOD,*3-GW?dCVM.;q?nfpZT3U>Ls|gdIk*+FgVIhxof`D9l2');
define('NONCE_SALT',       'WHjw]}beZA{|?Vz1Z*O5Wq!ZP}7oyi3E%7ZNDW#~/PEL5i2q,3Ce|s8x2GjL-+14');
/**#@-*/

De hecho, un truco para cerrar todas las sesiones de los usuarios conectados es cambiar estas claves, pues una vez guardados los cambios WordPress echará (literalmente) de su sesión actual a todos los usuarios, el tuyo incluido, forzando a iniciar sesión (con sus credenciales habituales) de nuevo.

Modo DEBUG

La línea incluida en el archivo wp-config.php  por defecto para activar el modo de depuración viene inactiva por defecto, así que si queremos que WordPress nos informe de cada error mientras creamos nuestro sitio deberíamos cambiarla de false  a true , así:

define('WP_DEBUG', true);

Además, como ya vimos en el artículo en el que explicamos todas sus posibilidades, también podemos añadir una línea para que se guarde un registro de todos los errores en un archivo llamado debug.log en la carpeta wp-content:

define('WP_DEBUG_LOG', true);

Y, si activamos el registro anterior, puede que no tenga sentido también mostrar los errores en pantalla, cosa que podrás evitar añadiendo esta otra línea:

define('WP_DEBUG_DISPLAY', false);

EXTRA: Ajustes avanzados del archivo wp-config.php

Lo que hemos visto hasta ahora es la información más importante, y necesaria, del archivo de configuración y WordPress pueda funcionar correctamente, pero hay muchos más ajustes que podemos realizar en el archivo wp-config.php .

Cambiar la ubicación de wp-content

También puedes añadir esta constante para cambiar la ruta donde se guarden tus plugins, temas y archivos, por supuesto poniendo tu ruta en lugar de la del ejemplo y asegurándote de que la nueva carpeta existe:

Con ruta relativa:

define('WP_CONTENT_DIR', dirname(__FILE__) . '/mi-contenido' );

Con ruta absoluta:

define('WP_CONTENT_URL', 'https://misitio.es/mi-contenido' );s

Cambiar la ubicación de la carpeta de plugins

Si solo quieres cambiar la ubicación de la carpeta de instalación de los plugins sería algo así:

Con ruta relativa:

define('WP_PLUGIN_DIR', dirname(__FILE__) . '/mis-plugins' );

Con ruta absoluta:

define('WP_PLUGIN_URL', 'https://misitio.es/mis-plugins' );

Cambiar la ubicación de la carpeta de archivos subidos

En este caso añade algo como lo siguiente:

define('UPLOADS', 'wp-content/mis-fotos' );

Migrar de dominio

Un truco poco conocido del archivo wp-config.php  es que puede ayudarte a la hora de migrar de dominio, para lo que deberás añadir la siguiente constante antes de iniciar la migración:

define('RELOCATE',true);

Echa un vistazo a este artículo para conocer el proceso completo paso a paso.

Aumentar el límite de memoria

Un truco de los más solicitados y utilizados es modificar el límite de memoria de PHP añadiendo esta línea a wp-config.php :

define('WP_MEMORY_LIMIT', '256M');

Puedes especificar el límite de memoria al que necesites: 64M, 128M, 256M. Si no funciona tendrás que hablar con tu proveedor para que te cambie el límite desde el servidor.

Aumentar el límite de memoria en la administración

Como las gestiones de administración pueden requerir mucha memoria del servidor puedes tratar de establecer el límite de tu servidor a un valor mayor así:

define('WP_MAX_MEMORY_LIMIT', '256M' );

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');

Reparar la base de datos

Si quieres reparar manualmente la base de datos puedes hacerlo añadiendo esta línea a tu archivo wp-config.php:

define('WP_ALLOW_REPAIR', true);

A continuación visita esta URL y ejecuta la optimización: https://misitio.es/wp-admin/maint/repair.php

Cuando termines borra la anterior línea de tu archivo de configuración o cámbiala a false .

Definir las rutas de tu sitio

Son varias las situaciones en las que puede ser interesante definir manualmente las rutas de tu sitio en vez de recuperarlas de la base de datos. Por ejemplo, ante un cambio erróneo en la página de ajustes generales de WordPress.

Puedes definir estas rutas en el archivo wp-config.php  así:

define('WP_HOME', 'https://misitio.es'); // blog url
define('WP_SITEURL', 'https://misitio.es'); // site url

Definir la ruta a tu tema

Si quieres especificar, sin lugar a dudas, cual es la ruta a tu tema activo simplemente añade una línea así:

define('TEMPLATEPATH', '/ruta/absoluta/a/wp-content/themes/nombredeltema');

Especificar el tema por defecto

¿Quieres que tu tema por defecto sea otro en caso de que falle el tema activo? Añade algo como el siguiente ejemplo:

define('WP_DEFAULT_THEME', 'nombre-de-carpeta-del-tema' );

Definir la ruta de la hoja de estilos

Igualmente, puedes definir la ruta a la hoja de estilos principal de tu sitio así:

define('STYLESHEETPATH', '/ruta/absoluta/a/wp-content/themes/nombredeltema');

Evitar que WordPress te instale un tema o plugin por defecto

Si no quieres que WordPress te instale algún tema Twentyalgo o los plugins por defecto (Hello Dolly, por ejemplo) si no los encuentra añade esta línea:

define('CORE_UPGRADE_SKIP_NEW_BUNDLED', true );

Eliminar o controlar las revisiones de entrada

Si quieres que no se guarde ninguna revisión de entradas añade lo siguiente:

define('WP_POST_REVISIONS', false);

Y si quieres que solo guarde un número determinado personaliza el código así:

define('WP_POST_REVISIONS', 3);

Forzar los permisos de archivo y carpetas

Para cambiar los permisos de archivos y carpetas a sus valores por defecto – y seguros – añade esto:

define('FS_CHMOD_DIR', ( 0755 & ~ umask() ) );
define('FS_CHMOD_FILE', ( 0644 & ~ umask() ) );

Solucionar el error «Cannot modify header information»

Un truco muy socorrido ante estos errores es comprobar si en tu archivo wp-config.php hay algún espacio extra o línea de más antes de la apertura de PHP: <?php

Si así fuera borra la línea o espacio y guarda los cambios.

Activar WordPress Multisitio

El primer paso para activar las funcionalidades multisitio de WordPress es añadir la siguiente línea a tu archivo wp-config.php:

define('WP_ALLOW_MULTISITE', true );

Luego ve a la administración de WordPress y sigue estos pasos.

Desactivar la papelera

Si quieres borrar directamente entradas, páginas y comentarios, sin que se puedan recuperar de la papelera, añade lo siguiente:

define('EMPTY_TRASH_DAYS', 0 );

Cambiar el periodo de vaciado de la papelera

Si quieres que la papelera de entradas, páginas y comentarios se vacíe en un periodo distinto al por defecto (30 días) modifica ese límite así:

define('EMPTY_TRASH_DAYS', 7 );

Papelera también en los adjuntos

Por defecto WordPress no ofrece papelera de reciclaje para los archivos multimedia como si tiene para entradas, páginas o comentarios, pero puedes activarla añadiendo esta línea:

define('MEDIA_TRASH', true );

Solucionar problemas al subir archivos o crear carpetas

En ocasiones WordPress no puede crear las carpetas automáticas por mes y año de tus archivos subidos o da errores HTTP al intentar subir archivos. Una posible solución es añadir esta línea:

define('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp/') ;

Usar JetPack sin conexión a WordPress.com

Si quieres usar JetPack en modo desarrollador añade lo siguiente a tu wp-config.php:

define('JETPACK_DEV_DEBUG', true);

Desactivar todas las actualizaciones automáticas en segundo plano

Sencillo, añade esto y WordPress no volverá a actualizarse solo:

define('AUTOMATIC_UPDATER_DISABLED', true );

Actualizaciones automáticas también a versiones mayores

Si, por el contrario, quieres que WordPress se actualice solo también a versiones mayores (de 4.7 a 4.8 por ejemplo) añade lo siguiente:

define('WP_AUTO_UPDATE_CORE', true );

Eliminar las versiones guardadas de imágenes editadas

Por si no lo sabías, cuando editas una imagen WordPress guarda las distintas versiones por si quieres restaurarlas. Si no quieres que pase esto añade la siguiente línea:

define('IMAGE_EDIT_OVERWRITE', true );

Forzar SSL en el acceso y la administración

Si tienes un certificado SSL puedes forzar que el acceso y la navegación por la administración siempre sea bajo HTTPS así:

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Solucionar el bucle de redirecciones de acceso en multisitio

A veces pasa, si no puedes acceder y entras en bucle en un WordPress Multisitio añade estas líneas:

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', '');

Cargar solo lo fundamental de WordPress

Hay un modo minimalista de cargar WordPress con funcionalidades básicas que se activa añadiendo esta línea:

define('SHORTINIT', TRUE );

Evitar que WordPress te pida credenciales FTP para instalar o actualizar

En algunos servidores WordPress no puede acceder automáticamente para actualizar o instalar. Si te pasa puedes usar este código, personalizándolo con tus credenciales:

define('FS_METHOD', 'ftpext'); // fuerza el modo de sistema de archivos: "direct", "ssh", "ftpext", o "ftpsockets"
define('FTP_BASE', '/ruta/de/wordpress/'); // ruta absoluta al directorio raiz donde está instalado WordPress
define('FTP_CONTENT_DIR', '/ruta/de/wordpress/wp-content/'); // ruta absoluta al directorio "wp-content"
define('FTP_PLUGIN_DIR ', '/ruta/de/wordpress/wp-content/plugins/'); // ruta absoluta al directorio "wp-plugins"
define('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub'); // ruta absoluta a tu clave pública SSH
define('FTP_PRIVKEY', '/home/username/.ssh/id_rsa'); // ruta absoluta a tu clave privada SSH
define('FTP_USER', 'usuario'); // tu usuario FTP o SSH
define('FTP_PASS', 'contraseña'); // contraseña del usuario FTP_USER
define('FTP_HOST', 'ftp.dominio.tld:21'); // combinación de puerto:servidor a tu servidor SSH/FTP

Cambia el intervalo del guardado automático

Como ya sabrás, el editor de WordPress guarda tus escritos cada poco tiempo. Si quieres cambiarlo pon el siguiente parámetro en los segundos que quieras, en el ejemplo 300 segundos=5 minutos:

define(’AUTOSAVE_INTERVAL’, 300);

Mismos usuarios en varios sitios distintos

Como puedes usar una misma base de datos para varios sitios, si quieres usar la misma tabla de usuarios para ambos puedes especificar en el archivo wp-config.php  de cada sitio qué tablas de usuarios usar de cualquiera de ellos así:

define('CUSTOM_USER_TABLE', 'prefijotablaelegida_users');
define('CUSTOM_USER_META_TABLE', 'prefijotablaelegida_usermeta');

Activar la caché de objetos de WordPress

Antes de liarte a instalar plugins de caché puedes usar la caché de objetos de caché activándola en tu archivo de configuración así:

define('WP_CACHE', true );

Comprimir los contenidos

Otra funcionalidad que puedes activar en WordPress y así ahorrarte un plugin de optimización web es la posibilidad de comprimir todo tu contenido en archivos estáticos añadiendo estas líneas a tu fichero wp-config.php:

define('COMPRESS_CSS', true );
define('COMPRESS_SCRIPTS', true );
define('CONCATENATE_SCRIPTS', true );
define('ENFORCE_GZIP', true );

Estas líneas comprimen el CSS y los archivos JavaScript, concatenan todos los JavaScript y fuerzan la carga de la compresión gzip, ahí es nada, sin plugins y casi sin manos.

Solucionar las entradas programadas que no se publican

Si programas entradas y no se publican cuando debieran puedes usar un cron alternativo añadiendo esta línea:

define('ALTERNATE_WP_CRON', true );

Desactivar o controlar el cron de WordPress

Por otra parte, si no vas a utilizarlo, puedes desactivar el cron de WordPress:

define('DISABLE_WP_CRON', true );

Y si lo prefieres puedes especificar el tiempo de espera en segundos entre cada ejecución como en este ejemplo:

define('WP_CRON_LOCK_TIMEOUT', 60 );

Guardar las queries

Cuando estás liado con la base de datos puede que quieras guardar las queries para que puedas depurar qué está pasando en un plugin o tema.

Añade esta línea:

define('SAVEQUERIES', true );

Nota: esto ralentiza WordPress

Depuración de scripts

Cuando tienes un plugin o tema que incluye la versión minimizada de tus archivos CSS o JavaScript por defecto es un error.

Siguiendo la idea de WordPress de que crear un archivo para desarrollo y su versión minimizada es buenísimo, y que deberías tener ambos archivos en tu plugin, y basándonos en esta variable, deberías encolar uno al otro.

Por defecto, esta constante estará configurada a false, y si quieres activarla para depurar archivos CSS o JavaScript desde WordPress deberías ponerla en true.

define('SCRIPT_DEBUG', true );

Al poner esta constante a true los archivos de WordPress wp-includes y wp-admin se configurarán a su versión de desarrollo.

Definir el dominio de cookies

También puedes especificar el dominio de las cookies de WordPress si, por ejemplo, sirves contenido estático en un subdominio y quieres definir las cookies de WordPress solo para el contenido no estático, y así evitar la carga de cookies en cada petición de contenido estático en tu subdominio.

Se haría así:

define('COOKIE_DOMAIN', 'misitiodinamico.es' );

Bloquear peticiones desde URLs externas

Si quieres que se bloquee toda petición desde una URL diferente a la de tu base de datos añade la siguiente línea:

define('WP_HTTP_BLOCK_EXTERNAL', true );

Ahora bien, si quieres permitir peticiones de URLs concretas deberías añadir una línea así:

define('WP_ACCESSIBLE_HOSTS', 'rpc.pingomatic.com, api.wordpress.org,*.github.com, *.ayudawp.com' );

Desactivar el editor interno de WordPress de plugins y temas

Una medida básica – e importante – que siempre recomiendo es hacer desaparecer el editor interno de WordPress de plugins y temas añadiendo esta línea:

define('DISALLOW_FILE_EDIT', true );

Desactivar las actualizaciones e instalaciones de plugins y temas

Otro de mis trucos favoritos es evitar que nadie, ni siquiera los administradores, puedan actualizar o instalar temas o plugins desde la administración de WordPress, así:

define('DISALLOW_FILE_MODS', true );

Más información sobre el archivo wp-config.php

Espero que aprendas mucho de este artículo y que te sirva de algo cuando lo necesites, solo con que te salve de alguna situación embarazosa me daré por satisfecho.

Si quieres ampliar aún más información sobre wp-config.php te recomiendo estos enlaces:

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 5 / 5. Total de votos: 39

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

15 comentarios en “wp-config.php: Todo lo que querías saber y mucho más (actualizado 2022)”

  1. Que curioso este artículo sobre el archivo ‘wp-config.php’ a juzgar por el artículo que hice la semana pasada, jeje, será casualidad 🙂

    Dicho lo cual, gracias por el mismo, así me empapo bien. Porque mi solución para el FTP interno que impuso STRATO a mediados 2014, la descubrí por casualidad al trabajar de forma local (algo que llevaba sufriendo 2 años y no estaba presente en nuevas instalaciones).

    Qué seria de nosotros sin AyudaWP by Fernando Tellado.

    Saludos jefe 🙂

  2. Hola Fernando, muchas gracias por semejante «Biblia» del ‘wp-config.php’ !

    Muchas cosas, y muchas que ya están en tu último libro, genial!

    Un detalle, en el caso del enlace ‘plugins’ para modificar el prefijo en BBDD, nos llevas a tu articulo del año 2012, en ese articulo los enlaces a los plugins citados quizás están ya des actualizados, creo, uno lleva a un plugin muy mal valorado y el otro a uno que ya no existe…, algo obvio por el tiempo que ha pasado y la movilidad del mundo WordPress; ¿puedes recomendar algún otro plugin?

    Saludos!!

  3. antonio felices

    Muchas gracias por esta recopilación, genial artículo! Siempre es bueno tener una a mano para consultar todas las posibilidades de configuración.

    Solo tengo una duda sobre las constantes que usas para comprimir CSS y JS… tenía entendido que estas constantes solo funcionan para el panel de administración y que por defecto los valores ya se encuentran en true.
    Gracias a ello cuando estoy en el panel de administración aparece una única llamada a un script que concatena todos los JavaScript que vienen del core de WordPress (carpetas wp-admin, wp-includes, etc). La url es algo así como <script src="http://miwordpress.zzz/wp-admin/load-scripts.php?c=1&load=jquery-ui-core…
    Si en mi wp-config paso un false en estas constantes, aparecen un mundanal de archivos.
    Lo mismo para los CSS

    También tenía entendido que estas constantes, no afecta el front end de mi WordPress… por ello siempre necesitaré un plugin de optimización para concatenar todos los js y css que vienen de plugins y del mismo tema.
    ¿Es correcto?

    Saludos!

  4. Yesika López Vera

    Hola excelente articulo, yo tengo problemas con mi wordpress cuando intento agregar un plugin me da una advertencia que dice Sucedio un error inesperado.Puede que algo vaya mal en su wordpress.¿creen que sea un problema con mi hosting, o es algo que yo puedo solucionar?

  5. MUY BUEN APORTE, Muchas gracias por toda la informacion.
    He editado wp-config-php para poner el otro directorio wp-content y me esta dando problemas..

    Ejemplo:
    Ubicacion actual:
    Directorio Final:

    Me puedes echar una mano?

    Gracias de Antemano,

  6. Hola Fernando tengo un error , mi pagina fue creada en html y tengo dentro de esta una pagina otra creada en wp y siempre me da (error de base de datos), el problema sera la ruta con la base de datos?

    1. Puede ser el host, el usuario o la contraseña o el mismo nombre de la BD. Tendrías que mirar en el wp-config.php a ver qué pone y comprobar en tu hosting si está creada, si el usuario es el correcto, la contraseña correcta, y si el usuario tiene permisos en esa BD

      1. Correcto estimado Fernando… es en el WP administrado del hosting godaddy.com donde tengo a alojado el sitio. Allí figuraan dos carpetas:
        PHP wp-config.php
        wp-config.php.1
        Y la pregunta es, si está bien tener esta dos carpetas, ya que mi sitio esta muy ralentizado y no encuentro el motivo para ello.
        Cordial saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio