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.

<?php

// 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().

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

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

Deja un comentario

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

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios