web-dev-qa-db-fra.com

Différence entre update_user_meta et update_user_option

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

10
mpsbhat

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

Regardez le 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é avec le préfixe de la table + l'ID de blog (uniquement lorsque l'ID est différent de 1 et 0).

Si vous définissez le dernier paramètre $global sur true, il n'y a aucune différence avec update_user_meta().

Objet de la fonction update_user_option()

Contrairement aux autres tableaux, WordPress ne crée pas de tableau distinct pour usermeta pour chaque site. Il enregistre les informations utilisateur 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 prefix par exemple. pour l'ID de blog 4 wp_capabilities est stocké sous le nom wp_4_capabilities.

Ainsi, quelles que soient les informations que vous enregistrez avec update_user_option(), par exemple, key_name_abc deviendra wp_key_name_abc pour le site principal dans une installation multisite ou sur un seul site. À l'avenir, si vous convertissez votre site unique en multisite, les informations ne seront disponibles que sur le site principal.

Utilisez cette fonction lorsque vous pensez que certaines informations dépendent aussi du site + de l'utilisateur. Ce n'est pas comme le nom, l'adresse électronique, etc., car ces informations appartiennent à l'utilisateur et au site indépendamment.

7
Sumit

Les deux écrivent leurs données dans la table "usermeta". Les options utilisateur stockées dans la table usermeta conservent le préfixe de la table wordpress, par exemple. wp_ alors que la méta utilisateur également stockée dans la table usermeta ne le fait pas.

Les options utilisateur prennent en charge des options spécifiques au blog, utiles dans les sites multisites. La méta de l'utilisateur est basée sur les métadonnées spécifiques à l'identifiant de l'utilisateur, telles que les informations de profil.

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

Voici quelques valeurs pour les deux options et pour 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
  • couleur_admin

https://codex.wordpress.org/Function_Reference/update_user_option#Parameters

https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters

Les exemples de pages de codex fournissent une utilisation dans le monde réel.

7
Jarmerson