¿Alguien puede explicar lo que es la diferencia entre update_user_meta
y update_user_option
y escenarios en los que los dos se pueden usar?
En términos simples, ¡no hay una gran diferencia! update_user_option()
utiliza update_user_meta()
internamente. La única diferencia es el update_user_option()
prefijo del nombre de la opción con el prefijo de la tabla de la base de datos + ID del blog si está en varios sitios y solo el prefijo de la tabla si está en la instalación de un solo sitio.
Echa un vistazo al código de update_user_option()
/**
* Update user option with global blog capability.
*
* User options are just like user metadata except that they have support for
* global blog options. If the 'global' parameter is false, which it is by default
* it will prepend the WordPress table prefix to the option name.
*
* Deletes the user option if $newvalue is empty.
*
* @since 2.0.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int $user_id User ID.
* @param string $option_name User option name.
* @param mixed $newvalue User option value.
* @param bool $global Optional. Whether option name is global or blog specific.
* Default false (blog specific).
* @return int|bool User meta ID if the option didn't exist, true on successful update,
* false on failure.
*/
function update_user_option( $user_id, $option_name, $newvalue, $global = false ) {
global $wpdb;
if ( !$global )
$option_name = $wpdb->get_blog_prefix() . $option_name;
return update_user_meta( $user_id, $option_name, $newvalue );
}
El nombre de su opción tiene como prefijo el prefijo de la tabla + ID del blog (solo cuando la ID es distinta de 1 y 0).
Si se establece el último parámetro $global
que true
no tiene ninguna diferencia con update_user_meta()
.
Propósito de la update_user_option()
función
A diferencia de otras tablas, WordPress no crea una tabla separada para los usermeta para cada sitio. Guarda la información del usuario en una tabla de usermeta para todos los blogs (en varios sitios). Simplemente prefija el nombre de la clave para cada sitio, por blog prefix
ejemplo, para el ID de blog 4 wp_capabilities
se almacena como wp_4_capabilities
.
Por lo tanto, cualquier información que ahorre usando update_user_option()
, por ejemplo, key_name_abc
se convertirá wp_key_name_abc
en el sitio principal en la instalación de sitios múltiples o en un solo sitio. En el futuro, si convierte su sitio único en multisitio, la información estará disponible solo en el sitio principal.
Use esta función cuando piense que parte de la información también depende del sitio + usuario. No como nombre, correo electrónico, etc. porque esta información pertenece al usuario y al sitio de forma independiente.
Ambos escriben sus datos en la tabla "usermeta". Las opciones de usuario almacenadas en la tabla usermeta retienen el prefijo de la tabla wordpress, por ejemplo, wp_, mientras que el meta del usuario también almacenado en la tabla usermeta no.
Las opciones de usuario admiten opciones específicas de blog, útiles en sitios múltiples. El meta del usuario se basa en los metadatos específicos del ID del usuario, como la información del perfil.
Los parámetros son bastante diferentes de hecho. La opción de usuario tiene $ user_id, $ option_name, $ newvalue, $ global y el usuario meta tiene $ user_id, $ meta_key, $ meta_value, $ prev_value.
Aquí hay algunos valores para ambas opciones y la usermeta del usuario.
Opciones
Usuario
https://codex.wordpress.org/Function_Reference/update_user_option#Parameters
https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters
Los ejemplos de páginas del códice proporcionan uso en el mundo real.