Contenido del artículo

¡Haz clic para puntuar esta entrada!
(Votos: 55 Promedio: 4.4)

wp-config.php es uno de los archivos más importantes de wordpress ya que contiene la información esencial para que wp pueda trabajar. A un nivel básico, este archivo es generado automáticamente durante la instalación, así que si igual no te has planteado hacer muchas cosas sobre él, pero vamos a enseñarte que ofrece muchas posibilidades de securización y configuración avanzada de wordpress.

Podrás encontrar documentación original sobre él en el codex de wordpress (documentación en inglés) haciendo click aquí

Vamos a ello!

Configuración avanzada de la conexión de wordpress con la base de datos

La configuración de las bases de datos de wordpress, irá en función de las especificaciónes de nuestro proveedor de hosting. Lo más habitual es realizar una configuración contra localhost tal y como se vé en el código.

Conectar WP con un servidor de BD local

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );

/** MySQL database username */
define( 'DB_USER', 'username_here' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password_here' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Cuando conectamos con localhost, estamos conectando con un servidor mysql que se está ejecutando en la misma maquina que el servidor web y por ello responde a la misma dirección IP.

Conectar WP con un servidor de BD en otra ip o puerto diferente

Obviamente solo si tu proveedor de hosting te diese unas especificaciónes diferentes a las que se entienden por defecto deberías de utilizar alguna alternativa como esta. EL puerto se especifica después del nombre o dirección IP separandolo con dos puntos ‘:’

Varios Ejemplos:

define( 'DB_HOST', '127.0.0.1:4000' );
define( 'DB_HOST', 'mi.servidormysql.com:4000' );

Conectar wordpress con sockets UNIX o PIPES. Son casos mas raros que no se dan en el hosting compartido.

define ( 'DB_HOST','127.0.0.1:/var/run/mysqld/mysqld.sock' );
define ( 'DB_HOST','midominio.com:/var/run/mysqld/mysqld.sock' );

Charset – Juego de caractéres de la base de datos

El valor predeterminado del Juego de Caracteres de la base de datos utilziada en WP es UTF-8. Con esta configuración no deben de producirse problemas ya que es compatible practicamente con cualquier idioma, no obstante, podemos modificar mediante esta constate el tratamiento del Juego de Caracteres. Eso si, es importante vigilar con que juego de caracteres está creada la base de datos. Si hay diferencias, entonces si que pueden surgir problemas.

define ('DB_CHARSET', 'utf8');

Configuración de las Security Keys

A paritr de la versión 2.6 de wordpress, se estableciaron una serie de claves diseñadas para mejorar el cifrado de la información de tu wordpress. El uso de estas claves es opcional, no obstante WP las crea automaticamente cuando se ejecuta la instalación por primera vez.

Estas claves no hay porque memorizarlas, simplemente crearlas y olvidarse. WordPress pone un generador online para que puedas generar buenas claves robustas con facilidad. Puedes visitarlo:

https://api.wordpress.org/secret-key/1.1/salt/

Esencialmente se crean ocho claves parecidas a estas:

define('AUTH_KEY','B$Ykda(ps|ZEdC2@]fO65sN+oTO!w=>C=`^w;OoM4=_q`.srk6U=s=/e#)~h~>nN');
define('SECURE_AUTH_KEY','{;i)G.Zha=M1DbN4Q~p--*eqbIS;Y+Sw59[E4=bLB*$gNo1{<zW,|7}P7i_S-^r?'); 
define('LOGGED_IN_KEY','2|Z4TAg!-TjsqJ~[e=(0:b4k{N&+3NTFpIph(LSWH5=DpJLV}9 -)cg02||DFc7W');
define('NONCE_KEY','We*1q6pCPm|Y0+a^S>#_#NhwO>_29w?%+hdNlcJ0;rw-4@p18APW~Gn1W}HC9^F#');
define('AUTH_SALT','vYVeT9yr@J|lW|udRYT17To|.H3:n^jAG>WNC./wbgw1_xj)|#eWrV9PSx:2|0}!');
define('SECURE_AUTH_SALT',')B178I.}h-=24#w)zX$L5kAD} y!k2OzDwVLjbY%q?LlC=&{pI(`, +Wq}&VY^yy');
define('LOGGED_IN_SALT','jAs^)z6ee3XU}kj,<4C|}][aXR)kIeE?l-+a4Tq^]U$;Qb`X05|r,>AMy2UU[dyW');
define('NONCE_SALT','U?x!Kmk$@DW>es_^sxQYxWp:yc>,n2:>).v<`+7xL3+(?TO{:^@En.TBW{udBRHw');

Cada una de estas variables se encarga de hacer más robusta una parte funcional de tu worpdress.

Como configurar el prefijo de las tablas de la base de datos de wordpress

El prefijo de la base de datos es importante ya que desde un ataque externo, el primero intento será leer las tablas de la base de datos con su nombre original y dado que wordpress es un desarrollo público, cualquier atacante ya tiene esa información.

Cambia el prefijo de las tablas de la base de datos en WP así:

$table_prefix = 'miprefijo_';
  • Es importante tener algunas cosas en cuenta:
  • Solo están permitodos los numero, letras y guiones bajos.
  • El valor de esta variable se te solicitará en el momento de la instalación ya que de este valor depende la creación de la base de datos.
  • Si quieres cambiar esto con tu wordpress ya instalado, luego tendrás que renombrar las tablas.

Como configurar el Site URL

Esta constante está diseñada para establecer la ruta del site donde están los archivos principales de wordpress. Parece una variable innecesaria ya que en la tabla wp-options->site_url de wordpress ya se almacena este valor, sin embargo vamos a ver como se define y cuales son sus ventajas.

define ('WP_SITEURL', ' https://midominio.com/ruta-de-wordpress' );

Consideraciones importantes:

  • NO incluyas la / del final de la URL
  • Si esta variable está definida, se anula el valor de la tabla wp-options ¡Pero tranquilo, NO LO CAMBIA!
  • Esto nos lleva a concluir que si definimos esta variable se reducirán el número de llamadas a la base de datos de wordpress optimizando así la velocidad de carga. ¡Esto es importante!

Como establecer el Wordepress Site URL de forma dinámica

Puedes establecerlo en base a las sioguientes variables:

  • $ _SERVER [‘HTTP_HOST’]
  • $ _SERVER [‘SERVER_NAME’]

Dos ejemplos:

define ('WP_SITEURL', ' https://' . $ _SERVER ['HTTP_HOST'] . '/ruta-de-wordpress');
define ('WP_SITEURL', ' https://' . $ _SERVER ['SERVER_NAME'] . '/ruta-de-wordpress');

Como configurar el home

Esta constante es similar a la anterior de WP_SITEURL. Sirve para definir la ruta del home de wordpress y anula al dato almacenado en wp_options->wp_home pero no lo modifica, ¡recuerdaló!

Tres ejemplos:

define ('WP_HOME', ' https://midominio.com/wordpress' );
define ('WP_HOME', ' https://midominio.com' );
define ('WP_HOME', ' https://' . $_SERVER['HTTP_HOST']. '/ruta-de-wordpress');

Recuerda que como en el caso anterior no debes de poner al final del valor el caracter / que indica el final de la carpeta.

Como cambiar la carpeta wp-content de sitio

Desde la versión 2.6 de wordpress, se puede mover la carpeta wp-content de sitio especificando las siguientes constantes en el archivo de configuración:

define ('WP_CONTENT_DIR', dirname(__ FILE__). '/blog/wp-content');
define ('WP_CONTENT_URL', 'https://midominio.com/blog/wp-content' );

Esto securiza en cierta medida los archivos de contenido de wp ya que el visitante no puede acceder directamente a la ruta de archivos para intentar descargas de archivos que supuestamente conozca.

Como cambiar la carpeta de plugins de wordpress

Desde la versión 2.6 de wordpress, se puede mover la carpeta plugins de sitio especificando las siguientes constantes en el archivo de configuración:

define ('WP_PLUGIN_DIR', dirname(__ FILE__). '/blog/wp-content/plugins');
define ('WP_PLUGIN_URL', 'https://midominio.com/blog/wp-content/plugins' );

Como cambiar la carpeta de temas de wordpress

La carpeta de temas de wordpress no se puede mover, sin embargo se puede registrar una carpeta de temas nueva donde alojarlos:

$theme_root = WP_CONTENT_DIR . '/mistemas'; 

Como cambiar la carpeta de uploads de wordpress

Se puede definir la carpeta de UPLOADS mediante la siguiente constante:

define( 'UPLOADS', 'wp-content/media' );

Esta ruta no puede ser absoluta, tiene que estar referenciada o relativa a ABSPATH. Es necesario añadir esta definición antes de la siguiente linea:

require_once(ABSPATH . 'wp-settings.php');

Como configurar la frecuencia de auto guardado de wordpress

Crea esta constante para definir la frecuencia de autoguardado cuando estas trabajando expresada en segundos.

define( 'AUTOSAVE_INTERVAL', 300 );

Como desactivar las revisiones de wordpress

Para activar o desactivar el guardado de las revisiones de wordpress, define la siguiente constante:

define( 'WP_POST_REVISIONS', false );

Como configurar el número de revisiones de los post de wp

Para establecer el número de revisiones guardadas por wordpress, define la siguiente constante:

define( 'WP_POST_REVISIONS', 3 );

Establecer el dominio de las cookies de wordpress

Esta es una configuración bastante inusual en wordpress y que solo es práctica en casos de configuraciónes muy complejas en las que se pretenda paralelizar por ejemplo recursos de la web o similares:

define ('COOKIE_DOMAIN', 'www.midominio.com');

Como habilitar wordpress multisite / multisitio

Para configurar wordpress como multisitio, define la siguiente constante:

define ('WP_ALLOW_MULTISITE', true);

Como habilitar el modo debug de wordpress

Controla la cantidad de información de errores que devuelve wordpress para desarrollo. Define esta constante que por defecto es false:

define ('WP_DEBUG', false); 

La activación de esta constante permite el uso de otras constantes como:

define ('WP_DEBUG_DISPLAY', false); 
define ('WP_DEBUG_LOG', false); 

Si además vas a tocar hojas de estilo o javascript, puedes configurar la constante:

define ('SCRIPT_DEBUG', verdadero);

Como deshabilitar la concatenación de java script

En ocasiones el área de administración de wordpress se puede volver lenta y pesada. Esto es porque WP concatena en una sola URL los archivos JS del área de administración. Si surgen problemas con esta funcionalidad, pudes deshabilitar esta función:

define( 'CONCATENATE_SCRIPTS', false );

Como incrementar la memoria de wordpress

En ocasiones es necesario definir en wordpress el maximo de memoria que puede utilizar para la ejecución de un script. Esto es necesario cuando se reciben mensajes del tipo:

Allowed memory size of xxxxxx bytes exhausted

Para definir la memoria debes de incluir la siguiente linea:

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

Decir que es necesario que este valor debe de ir en consonancia con la configuración de PHP sobre la cual es necesario configurar la variable como puedes ver en la documentación oficial de php. La definición de esta variable tiene una sintaxis diferente en función de donde se defina, puedes definirla en los siguientes sitios en función de los permisos que tengas sobre el servidor de hosting:

  • php.ini
  • .htaccess
  • Sobre el propio script php

Como activar la cache de wordpress

define ('WP_CACHE', verdadero);

Como configurar el lenguaje y el directorio de lenguaje de wordpress

define( 'WPLANG', 'es_ES' );
define( 'WP_LANG_DIR', dirname(__FILE__) . '/wordpress/languages' );

Constantes de configuración de wordpress

En ocasiones es necesario configurar las constantes de actualización de wordpress en escenario de servidores con condiciones muy particulares. Para eso se pueden definir las siguientes constantes que son las necesarias para sobreescribir la configuración:

Constante Función
FS_METHOD Fuerza el metodo del sistema de archivos que se va a utilizar. Esto tiene implicaciónes de seguridad que puedes ver aquí

Las opciones son las siguientes:

  • direct – Utiliza las solicitudes de E/S del archivo directo desde PHP. Esta es la opción por defecto de wordpress
  • ssh2 – Fuerza el uso de la extensión de SSH de PHP si está instalada
  • ftpext – Fuerza el uso de la extensión FTP PHP para el acceso FTP
  • ftpsockets – Usa la clase PHP Sockets para el acceso por FTP
FTP_BASE Es la ruta de la carpeta de las instalación base de wordpress
FTP_CONTENT_DIR Es la ruta completa del directorio de contenido wp-content de wordpress
FTP_PLUGIN_DIR Es la ruta completa del directorio de plugins de wordpress
FTP_PUBKEY Es la ruta completa de la clave publica SSH en caso de estar forzando el metodo FS_METHOD a SSH
FTP_PRIKEY Es la ruta completa de la clave privada SSH
FTP_USER Usuario FTP
FTP_PASS Contraseña FTP
FTP_HOST Dirección IP o nombre del Servidor FTP
FTP_SSL True o False para definir la activación de la capa SSL

Un ejemplo:

define( 'FS_METHOD', 'ftpext' );
define( 'FTP_BASE', '/ruta/de/wordpress/' );
define( 'FTP_CONTENT_DIR', '/ruta/a/carpeta/wp-content/' );
define( 'FTP_PLUGIN_DIR ', '/ruta/a/carpeta/wp-content/plugins/' );
define( 'FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub' );
define( 'FTP_PRIKEY', '/home/username/.ssh/id_rsa' );
define( 'FTP_USER', 'username' );
define( 'FTP_PASS', 'password' );
define( 'FTP_HOST', 'ftp.example.org' );
define( 'FTP_SSL', false );

Como vaciar la papelera de wordpress automaticamente

Para vaciar la papelera de wordpress de forma automática solo es necesario definir el número de días que tienen que pasar como máximo para contener un elemento en la papelera y definir la siguiente constante:

define( 'EMPTY_TRASH_DAYS', 90); // 90dias

Si deseas desactivar esta función pon el valor a 0.

Como automatizar la optimización de la base de datos

Si deseas que wordpress inicie procesos de optimización automática de la base de datos, configura la siguiente variable:

define( 'WP_ALLOW_REPAIR', true );

Como deshabilitar el editor de theme y plugins de wordpress

Si deseas desactivar el editor de temas de wordpress para que ningún usuario pueda intentar editar el tema desde wordpress, configura la siguiente constante:

define( 'WP_ALLOW_REPAIR', true );

Como como forzar SSL Login para administradores

Para aumentar la seguridad de tu wordpress, fuerza el uso de SSL para la parte de administración de wordpress de forma que todos los usuarios que quieran acceder a la zona de administración sean redirigidos a la zona ssl «https://»

define( 'FORCE_SSL_ADMIN', true );

Como bloquear URLs externas

Si deseas que tu instalación de wordpress solo responda a determinadas solicitudes externas definidas por tí, utiliza la siguiente configuración:

define ('WP_HTTP_BLOCK_EXTERNAL', true); 
define ('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org, *. github.com');

Como desactivar la actualización automática del core de wordpress

Utiliza las siguientes constantes si quieres deshabilitar la actualización del core de wordpress de forma parcial o total:

# Deshabilitar todas las actualizaciones principales: 
 define ('WP_AUTO_UPDATE_CORE', false); 

 # Habilite todas las actualizaciones principales, incluidas las secundarias y principales: 
 define ('WP_AUTO_UPDATE_CORE', true); 

 # Habilitar actualizaciones principales para versiones menores (por defecto): 
 define ('WP_AUTO_UPDATE_CORE', 'minor');

Como limpiar imagenes editadas

De forma predeterminada, WordPress crea un nuevo conjunto de imágenes cada vez que edita una imagen y cuando restaura el original, deja todas las ediciones en el servidor. Definir IMAGE_EDIT_OVERWRITE como verdadero cambia este comportamiento. Solo se crea un conjunto de ediciones de imágenes y cuando restaura el original, las ediciones se eliminan del servidor.

define ('IMAGE_EDIT_OVERWRITE', true);