Diferencia entre update_user_meta y update_user_option


11

¿Alguien puede explicar lo que es la diferencia entre update_user_metay update_user_optiony escenarios en los que los dos se pueden usar?

Respuestas:


8

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 $globalque trueno 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 prefixejemplo, para el ID de blog 4 wp_capabilitiesse almacena como wp_4_capabilities.

Por lo tanto, cualquier información que ahorre usando update_user_option(), por ejemplo, key_name_abcse convertirá wp_key_name_abcen 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.


7

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

  • wp_user_level
  • wp_user-settings
  • wp_capabilities
  • wp_user-settings-time

Usuario

  • primer nombre
  • apellido
  • apodo
  • rich_editing
  • show_admin_bar_front
  • admin_color

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.


1
¿Puedes ser más claro sobre dónde se almacenan? Su primera oración sugiere que están almacenados en el mismo lugar, pero su segunda implica que no lo están, ¿tal vez sería mejor un ejemplo explícito? Tenga en cuenta que las respuestas deben ser independientes, por lo que aún tienen sentido después de que se establece linkrot. El códice también está mal mantenido y es reemplazado por el devhub
Tom J Nowell

@TomJNowell, estos se pueden encontrar en wp-includes / user.php: encontrará valores para meta y opciones en la tabla usermeta.
Editaré
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.