Blog sobre desarrollo WordPress en Español Desarrollo WordPress en Español
wp options

wp_options: ¿Qué es?, ¿Para qué sirve?, ¿Cómo se puede optimizar?, y ¿Cómo puedo hacer uso de ella?

En este artículo vamos a ver qué es wp_options, para qué sirve y cómo optimizarla eliminando los rastros que van dejando algunos plugins y temas, y cómo puedo hacer uso de ella para desarrollos a medida.

 

¿Qué es wp_options?

Es una tabla de la base de datos donde WordPress guarda los ajustes de configuración. Su estructura es la siguiente:

  • option_id: Identificador único
  • option_name: Nombre de nuestra opción
  • option_value: Valor de nuestra opción
  • autoload: Carga o no esta opción cuando WordPress inicia (yes/no)

 

Aunque lo veremos más adelante en detalle, la idea es que podemos crear una opción y guardar su valor en base de datos, y recuperarlo para usarlo y/o modificarlo a nuestro antojo en cualquier momento.

 

¿Para qué sirve wp_options?

Básicamente, todo lo que se puede hacer desde la sección Ajustes en tu panel de control se relaciona con la tabla wp_options.

Los temas y plugins también recurren a esta tabla para guardar ajustes de configuración propios. Almacenan un par clave/valor, por lo que es ideal para esta tarea.

De este modo podemos guardar un valor por ejemplo para almacenar un teléfono de contacto, y recuperarlo en el footer para mostrar esta información.

 

¿Cómo puedo optimizarla?

Cómo esta tabla es utilizada para almacenar diversa información, tanto de WordPress como de los temas y plugins que hemos instalado, lo normal es que se vayan quedando rastros. Con el paso del tiempo los registros en esta tabla aumentan de forma exponencial, y podemos empezar a experimentar caídas de rendimiento y lentitud, por lo que es recomendable de vez en cuando limpiarla de esos registros que ya no se usan.

Como casi siempre podemos recurrir a plugins para realizar esta tarea como pueden ser WP-Options-Manager o Clean Options o WP Clean Up del que ya hablamos aquí, o hacerlo nosotros a mano.

Siempre que vayamos a hacer modificaciones sobre la base de datos, es recomendable hacer una copia de seguridad antes de nada. Vamos a ver cómo eliminar datos obsoletos de nuestra tabla wp_options. Nos referimos a los transients, de los que hablaré con más detalle en la próxima entrada. Simplemente añadiendo en nuestro functions.php estas líneas:

<?php function delete_expired_transients() { global $wpdb, $_wp_using_ext_object_cache; if ($_wp_using_ext_object_cache) { return; } $time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time(); $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" ); foreach ($expired as $transient) { $key = str_replace('_transient_timeout_', '', $transient); delete_transient($key); } } add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' );?>

Muchos plugins utilizan esta tabla para almacenar información de configuración propia, pero algunos no tienen la buena costumbre de eliminarla cuando son desinstalados, por lo que habría que hacer una búsqueda directamente en base de datos y tratar de averiguar (algunos plugins usan prefijo propio para sus datos), qué registros pueden ser de plugins que ya no utilizamos y eliminarlos manualmente.

TRUCO

Si eres administrador de la web, accede al back-end y escribe a mano esta URL: http://www.tusitio.com/wp-admin/options.php, verás todos los registros de la tabla wp_options, incluso podrás modificarlos, y así te puedes hacer una idea de la dimensión de esta tabla sin necesidad de entrar en phpMyAdmin.

 

¿Cómo puedo hacer uso de ella para mis desarrollos a medida?

WordPress dispone de la Options API o API de opciones para trabajar cómodamente y de una manera eficaz con la tabla wp_options.

La API te permite crear, obtener, actualizar y eliminar registros en la tabla de opciones.

// Crear una opción en la base de datos // En la variable $option estableces el nombre de tu opción, y en $value el valor que le das. $deprecated lo puedes obviar y $autoload es para establecer true o false para que se cargue automáticamente esta opción al inicio add_option( $option, $value, $deprecated, $autoload); // Eliminar una opción por nombre. delete_option( $option ); // Recuperar una opción guardada //$option es el nombre de nuestra opción y $default es un valor que podemos establecer por defecto en caso de que no se encuentre en base de datos este dato get_option( $option, $default = false ); // Actualizar el valor de una opción que ya estaba añadida. Añade la opción si ésta no existe previamente en base de datos update_option( $option, $newvalue, $autoload );

NOTA

Para WordPress multisite hay algunas variaciones, y tenemos disponibles las funciones add_site_option(), get_site_option(), update_site_option() y delete_site_option().

Puede que también te interese

Hacer una migración de dominio en WordPress sin perder posicionamiento
Hacer una migración de dominio en WordPress sin perder posicionamiento
En el artículo anterior vimos cómo migrar WordPress de hosting y de dominio. Puede darse el caso de que tu dominioantiguo.com estuviera bien posicionado y…
Cómo personalizar AMP en WordPress
Cómo personalizar AMP en WordPress
AMP es el proyecto de Google y varios partners (entre los que se encuentra WordPress) para ofrecer a los usuarios páginas ultra rápidas. Son las…
WP-CLI Parte 7, importar y exportar contenido
WP-CLI Parte 7, importar y exportar contenido
1. Instalación y primeros pasos 2. Instalando WordPress y primeros pasos y configuraciones 3. Trabajando con posts 4. Trabajando con usuarios 5. Trabajando con la…
Cómo agregar campos personalizados al perfil de usuario de WordPress
Cómo agregar campos personalizados al perfil de usuario de WordPress
WordPress nos da la opción de permitir que los usuarios se registren en nuestro sitio (en Ajustes => Generales => Cualquiera puede registrarse). Por defecto…