Différence entre update_user_meta et update_user_option


11

Quelqu'un peut -il expliquer quelle est la différence entre update_user_metaet update_user_optionet dans quels scénarios les deux peuvent être utilisés?

Réponses:


8

En termes simples, il n'y a pas de différence majeure! update_user_option()utilise en update_user_meta()interne. La seule différence est le update_user_option()préfixe du nom de l'option avec le préfixe de table de base de données + l'ID de blog si vous êtes en multisite et juste le préfixe de table si vous êtes dans une installation à site unique.

Jetez un oeil au code 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 );
}

Le nom de votre option est préfixé par le préfixe de la table + l'ID du blog (uniquement lorsque l'ID est différent de 1 et 0).

Si vous définissez le dernier paramètre $globalsur trueil n'a aucune différence avec update_user_meta().

But de la update_user_option()fonction

Contrairement à d'autres tableaux, WordPress ne crée pas de tableau séparé pour l'usermeta pour chaque site. Il enregistre les informations des utilisateurs dans une table usermeta pour tous les blogs (en multisite). Il suffit de préfixer le nom de la clé pour chaque site avec blog prefixpar exemple pour le blog ID 4 wp_capabilitiesest stocké sous wp_4_capabilities.

Ainsi, quelles que soient les informations que vous enregistrerez en utilisant update_user_option(), par exemple, key_name_abcelles deviendront wp_key_name_abcpour le site principal dans une installation multisite ou sur un seul site. À l'avenir, si vous convertissez votre site unique en site multiple, les informations ne seront disponibles que sur le site principal.

Utilisez cette fonction lorsque vous pensez que certaines informations dépendent également du site + de l'utilisateur. Pas comme le nom, l'e-mail, etc., car ces informations appartiennent à l'utilisateur et au site.


7

Tous deux écrivent leurs données dans le tableau «usermeta». Les options utilisateur stockées dans la table usermeta conservent le préfixe de la table wordpress, par exemple wp_, contrairement à la méta utilisateur également stockée dans la table usermeta.

Les options utilisateur prennent en charge les options spécifiques au blog, utiles dans le multisite. Les métadonnées utilisateur sont basées sur les métadonnées spécifiques à l'ID utilisateur, comme les informations de profil.

Les paramètres sont en fait assez différents. L'option utilisateur a $ user_id, $ option_name, $ newvalue, $ global et l'utilisateur meta a $ user_id, $ meta_key, $ meta_value, $ prev_value.

Voici quelques valeurs pour les options et l'utilisateur usermeta.

Les options

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

Utilisateur

  • Prénom
  • nom de famille
  • surnom
  • 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

Les exemples de pages codex fournissent une utilisation réelle.


1
Pouvez-vous être plus clair sur l'endroit où ils sont stockés? Votre première phrase suggère qu'ils sont stockés au même endroit, mais votre deuxième implique qu'ils ne le sont pas, peut-être qu'un exemple explicite serait mieux? Gardez à l'esprit que les réponses doivent être autonomes, donc elles ont toujours un sens après l'installation du linkrot. Le codex est également mal entretenu et remplacé par le devhub
Tom J Nowell

@TomJNowell ceux-ci peuvent être trouvés dans wp-includes / user.php - vous trouverez des valeurs pour les méta et les options dans la table usermeta. Je vais modifier ma réponse lol
Jarmerson
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.