Articles

Trucos de configuración de WordPress

Muchos usuarios de WordPress conocen el archivo wp-config.php como la clave de la base de datos de WordPress. Es donde se establece el nombre de la base de datos, el nombre de usuario, la contraseña y la ubicación (entre otras cosas como las claves de seguridad, el prefijo de la base de datos y el idioma localizado).

Aquí hay una captura de pantalla de wp-config.php (también conocido como el archivo de configuración de WordPress) para aquellos que aún no estén familiarizados:

The WordPress Configuration File, wp-config.phpEl archivo wp-config.php contiene la información necesaria para que WordPress se conecte a la base de datos

Pero lo que muchos usuarios no saben es que el archivo wp-config.php puede ser utilizado para especificar una amplia variedad de ajustes de configuración, lo que le permite mejorar la funcionalidad, el rendimiento y la seguridad de su sitio impulsado por WordPress. En este artículo, comparto tantos de estos trucos de configuración como he podido recopilar a lo largo de los años. Esta guía cubre todo lo que aparece en el Codex de WordPress, así como algunos trucos adicionales que probablemente no hayas visto antes. Si conoces otros trucos de configuración de WordPress, compártelos en los comentarios y los añadiré al post.

¡Actualización! Echa un vistazo al artículo de seguimiento para más trucos de configuración de WordPress «

Credenciales de la base de datos *

Este conjunto de cuatro definiciones de configuración son necesarias para que WordPress se conecte a la base de datos:

define('DB_NAME', 'database-name');define('DB_USER', 'database-username');define('DB_PASSWORD', 'database-password');define('DB_HOST', 'localhost');

El nombre de la base de datos, el nombre de usuario y la contraseña deberían estar fácilmente disponibles durante la creación de la base de datos, pero el valor DB_HOST puede ser más difícil de adquirir. Lo más común es que este valor sea simplemente «localhost«, pero si eso no funciona, aquí hay algunos otros valores para probar:

  • 1and1 Hosting – db12345678
  • DreamHost – mysql.example.com
  • GoDaddy – h41mysql52.secureserver.net
  • ICDSoft – localhost:/tmp/mysql5.sock
  • MediaTemple (GS) – internal-db.s44441.gridserver.com
  • Pair Networks – dbnnnx.pair.com
  • Yahoo – mysql

Incluso puede especificar un puerto alternativo para su servidor de base de datos. Aquí hay dos ejemplos:

define('DB_HOST', 'localhost:1234');
define('DB_HOST', 'mysql.domain.tld:1234');

Otro truco genial es detectar el valor del servidor de la base de datos automáticamente:

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

Si todo esto falla, o si sigue teniendo problemas, consulte a su proveedor de alojamiento para obtener ayuda.

Conjunto de caracteres de la base de datos y colación *

A partir de la versión 2.2 de WordPress, puede especificar un conjunto de caracteres para sus tablas de la base de datos MySQL. Generalmente, no hay razón para cambiar el valor por defecto del juego de caracteres UTF-8, que suele ser perfecto porque soporta todos los idiomas. Esta es la configuración por defecto (y recomendada):

define('DB_CHARSET', 'utf8');

La versión 2.2 de WordPress también le permite especificar la colación, que es el orden de clasificación del conjunto de caracteres de su base de datos. La configuración de la intercalación es generalmente manejada automáticamente por MySQL de acuerdo con el conjunto de caracteres, que se habilita dejando el valor de la intercalación en blanco como se hace en la configuración por defecto para esta definición. Aquí está la configuración por defecto (y recomendada):

define('DB_COLLATE', '');
Nota: sólo use estas dos definiciones si ya existen en su archivo wp-config.php.

Claves de seguridad *

A partir de WordPress 2.7, hay cuatro claves de seguridad disponibles que están diseñadas para asegurar una mejor encriptación de las cookies. Estas claves funcionan silenciosamente en segundo plano y deben ser tan aleatorias y complicadas como sea posible (no, nunca necesitará recordarlas). La forma más fácil de generar estas claves es hacerlo automáticamente en el servicio de claves secretas de WordPress.org. Simplemente visite ese enlace y copie/pegue los resultados en su archivo wp-config.php. Tenga en cuenta que estas claves se pueden cambiar en cualquier momento, y al hacerlo se invalidarán todas las cookies existentes de sus usuarios, por lo que tendrán que volver a iniciar sesión en su sitio.

define('AUTH_KEY', ':dr+%/5V4sAUG-gg%aS*v;&xGhd%{YV)p:Qi?jXLq,<h\`39');define('SECURE_AUTH_KEY', '@*+S=8\"\'+\"}]<m#+}V)p:Qi?jXLq,<h\`39m_(');define('LOGGED_IN_KEY', 'S~AACm4h1;T^\"qW3_8Zv!Ji=y|)~5i63JI |Al.'/path/to/wordpress');define('WP_SITEURL', 'http://'.$_SERVER.'/path/to/wordpress');

Probablemente sea mejor escapar de esos valores si se utiliza en un sitio público.

Ruta de la plantilla y ruta de la hoja de estilos

Al igual que con las constantes predefinidas para la dirección del blog y la dirección del sitio (véase la sección anterior), también puede aumentar el rendimiento eliminando las consultas a la base de datos para la ruta de la plantilla y la ruta de la hoja de estilos de su sitio. Estos son los valores por defecto para estas dos definiciones:

define('TEMPLATEPATH', get_template_directory());define('STYLESHEETPATH', get_stylesheet_directory());

Así, estas dos definiciones siguen consultando a la base de datos, pero podemos eliminar estas consultas extrañas codificando los valores en su lugar:

define('TEMPLATEPATH', '/absolute/path/to/wp-content/themes/active-theme');define('STYLESHEETPATH', '/absolute/path/to/wp-content/themes/active-theme');

Desactivar la caché y la caducidad de la caché

Estas dos opciones se aplican a las versiones más antiguas de WordPress que todavía utilizan el mecanismo de caché basado en objetos por defecto. La primera definición le permite habilitar o deshabilitar la caché, mientras que la segunda le permite especificar el tiempo de expiración de la caché.

Habilitar la caché

define('WP_CACHE', true); // enable the cachedefine('ENABLE_CACHE', true); // enable the cachedefine('CACHE_EXPIRATION_TIME', 3600); // in seconds

Deshabilitar la caché

define('WP_CACHE', false); // disable the cachedefine('DISABLE_CACHE', true); // disable the cache

Especificar el dominio de las cookies

Hay varias razones por las que desea especificar un dominio de cookies para su sitio. Un ejemplo común implica evitar que las cookies se envíen con solicitudes de contenido estático en subdominios. En este caso, usted usaría esta definición para decirle a WordPress que envíe cookies sólo a su dominio no estático. Esto puede suponer un aumento significativo del rendimiento. Aquí hay algunos ejemplos de configuración de varias rutas de cookies e información de dominio de cookies:

define('COOKIE_DOMAIN', '.digwp.com'); // don't omit the leading '.'define('COOKIEPATH', preg_replace('|https?://+|i', '', get_option('home').'/'));define('SITECOOKIEPATH', preg_replace('|https?://+|i', '', get_option('siteurl').'/'));define('PLUGINS_COOKIE_PATH', preg_replace('|https?://+|i', '', WP_PLUGIN_URL));define('ADMIN_COOKIE_PATH', SITECOOKIEPATH.'wp-admin');

Anular los permisos de archivo

Si los permisos de archivo por defecto de su alojamiento web son demasiado restrictivos, añadir estas definiciones a su archivo de configuración de WordPress puede ayudar a resolver el problema. Tenga en cuenta que no necesita las comillas alrededor de los valores de los permisos. Por ejemplo:

define('FS_CHMOD_FILE', 0755);define('FS_CHMOD_DIR', 0755);

Ver todas las constantes definidas

¿Necesita ver todas las constantes predefinidas? Buenas noticias, esta función de PHP devolverá una matriz de todas las constantes definidas actualmente:

print_r(@get_defined_constants());

Tablas de usuario y usermeta personalizadas

¿Qué hay de las tablas de usuario y usermeta personalizadas? Sí, también puede hacerlo, con las siguientes definiciones:

define('CUSTOM_USER_TABLE', $table_prefix.'my_users');define('CUSTOM_USER_META_TABLE', $table_prefix.'my_usermeta');

Constantes FTP/SSH

Este conjunto de definiciones de configuración está diseñado para ayudar a los usuarios a localizar y utilizar las conexiones FTP/SSH. Aquí hay un ejemplo de conjunto de constantes predefinidas para las actualizaciones de FTP/SSH:

define('FS_METHOD', 'ftpext'); // forces the filesystem method: "direct", "ssh", "ftpext", or "ftpsockets"define('FTP_BASE', '/path/to/wordpress/'); // absolute path to root installation directorydefine('FTP_CONTENT_DIR', '/path/to/wordpress/wp-content/'); // absolute path to "wp-content" directorydefine('FTP_PLUGIN_DIR ', '/path/to/wordpress/wp-content/plugins/'); // absolute path to "wp-plugins" directorydefine('FTP_PUBKEY', '/home/username/.ssh/id_rsa.pub'); // absolute path to your SSH public keydefine('FTP_PRIVKEY', '/home/username/.ssh/id_rsa'); // absolute path to your SSH private keydefine('FTP_USER', 'username'); // either your FTP or SSH usernamedefine('FTP_PASS', 'password'); // password for FTP_USER usernamedefine('FTP_HOST', 'ftp.domain.tld:21'); // hostname:port combo for your SSH/FTP server

Moviendo su directorio wp-content

A partir de la versión 2.6 de WordPress, puede cambiar la ubicación por defecto del directorio wp-content. Hay varias buenas razones para hacer esto, incluyendo la mejora de la seguridad del sitio y la facilitación de las actualizaciones FTP. Algunos ejemplos:

// full local path of current directory (no trailing slash)define('WP_CONTENT_DIR', $_SERVER.'/path/wp-content'); // full URI of current directory (no trailing slash)define('WP_CONTENT_URL', 'http://domain.tld/path/wp-content');

También puede especificar una ruta personalizada para su directorio plugins. Esto puede ayudar con los problemas de compatibilidad con ciertos plugins:

// full local path of current directory (no trailing slash)define('WP_PLUGIN_DIR', $_SERVER.'/path/wp-content/plugins'); // full URI of current directory (no trailing slash)define('WP_PLUGIN_URL', 'http://domain.tld/path/wp-content/plugins');

Tratar con las revisiones de las entradas

Las versiones recientes de WordPress proporcionan un sistema de revisión de entradas que permite a los usuarios guardar diferentes versiones de sus entradas del blog e incluso volver a las versiones guardadas anteriormente si es necesario. Independientemente de lo mucho que desprecie esta característica increíblemente impresionante, aquí hay un par de definiciones de configuración que pueden ser útiles para usted 😉

Limitar el número de revisiones guardadas

define('WP_POST_REVISIONS', 3); // any integer, but don't get too crazy

Desactivar la función de post-revisión

define('WP_POST_REVISIONS', false);

Especificar el intervalo de auto-guardado

En una línea similar a la función de post-revisión es la funcionalidad de auto-guardado de WordPress realmente útil. Por defecto, WordPress guarda su trabajo cada 60 segundos, pero puede modificar totalmente esta configuración a lo que quiera. Sin embargo, no se vuelva demasiado loco, a menos que quiera estresar su servidor 😉

define('AUTOSAVE_INTERVAL', 160); // in seconds

Depuración de WordPress

Desde la versión 2.3.1 de WordPress, los usuarios han podido mostrar ciertos errores y advertencias para ayudar a la depuración de su sitio. A partir de la versión 2.5 de WordPress, la activación de los informes de errores eleva el nivel de información a E_ALL y activa las advertencias de las funciones obsoletas. Por defecto (es decir, si no se especifica ninguna definición en el archivo wp-config.php), los informes de errores están deshabilitados.

define('WP_DEBUG', true); // enable debugging modedefine('WP_DEBUG', false); // disable debugging mode (default)

Configuración del registro de errores

Aquí tiene una forma fácil de habilitar el registro de errores básico para su sitio impulsado por WordPress. Cree un archivo llamado «php_error.log«, hágalo escribible por el servidor, y colóquelo en el directorio de su elección. Luego edite la ruta en la tercera línea del siguiente código y colóquelo en su archivo wp-config.php:

@ini_set('log_errors','On');@ini_set('display_errors','Off');@ini_set('error_log','/home/path/domain/logs/php_error.log');

Aumentar la memoria de PHP

Si está recibiendo mensajes de error diciéndole que su «Tamaño de memoria permitido de xxx bytes agotado», esta configuración puede ayudar a resolver el problema. A partir de la versión 2.5 de WordPress, la definición WP_MEMORY_LIMIT le permite especificar la cantidad máxima de memoria que puede utilizar PHP. Por defecto, WordPress intentará automáticamente aumentar la memoria de PHP hasta 32MB, por lo que este ajuste sólo es necesario para valores superiores a 32MB. Tenga en cuenta que algunos alojamientos web deshabilitan su capacidad de aumentar la memoria de PHP, por lo que es posible que tenga que rogarles que lo hagan. Aquí hay algunos ejemplos:

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

Guardar y mostrar las consultas de la base de datos para su análisis

Esta técnica es perfecta para guardar las consultas de la base de datos y mostrar la información para su posterior análisis. El proceso guarda cada consulta, su función asociada y su tiempo total de ejecución. Esta información se guarda como un array y puede mostrarse en cualquier página de la plantilla del tema. Para ello, primero añada la siguiente directiva a su archivo wp-config.php:

define('SAVEQUERIES', true);

Después, en el pie de página de su tema activo, coloque el siguiente código:

// display the query array for admin onlyif (current_user_can('level_10')) {global $wpdb;echo "<pre>";print_r($wpdb->queries);echo "</pre>";}

Aquí tiene una versión de una sola línea de esta función:

<?php if (current_user_can('level_10')) { global $wpdb; echo "<pre>"; print_r($wpdb->queries); echo "</pre>"; } ?>

Controlar el acceso al proxy

Desde WordPress 2.8, el archivo de configuración puede utilizarse para definir constantes relacionadas con el bloqueo, la autorización y el filtrado del acceso a hosts específicos desde detrás de un servidor proxy. Por ejemplo, si aloja su sitio de WordPress en una red de intranet, puede impedir el acceso a todos los hosts externos y sólo permitir las peticiones de localhost y de su blog utilizando la primera definición de abajo. También puede permitir el acceso a hosts específicos con una lista separada por comas de nombres de host permitidos, como se demuestra en la tercera definición de abajo.

define('WP_HTTP_BLOCK_EXTERNAL', true); // block external requestsdefine('WP_HTTP_BLOCK_EXTERNAL', false); // allow external requestsdefine('WP_ACCESSIBLE_HOSTS', 'api.wordpress.org'); // whitelist hosts
Note que debe permitir el acceso de api.wordpress.org para asegurar la correcta funcionalidad de los archivos del núcleo y los plugins.

¡Whew! Estoy hecho polvo. Hora de un pequeño descanso 🙂

Notas

  • * Denota que el código está incluido en el archivo wp-config.php por defecto
  • Traducción al portugués brasileño (por Tárcio Zemel)