Differenza tra update_user_meta e update_user_option


11

Qualcuno può spiegare che cosa è la differenza tra update_user_metae update_user_optioned in quali scenari della entrambi possono essere utilizzati?

Risposte:


8

In parole povere non c'è differenza sostanziale! update_user_option()utilizza update_user_meta()internamente. L'unica differenza è il update_user_option()prefisso del nome dell'opzione con il prefisso della tabella del database + ID blog se ci si trova in un sito multiplo e solo il prefisso della tabella se si è nell'installazione di un singolo sito.

Dai un'occhiata al codice di 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 );
}

Il nome dell'opzione è preceduto dal prefisso della tabella + ID blog (solo quando ID è diverso da 1 e 0).

Se si imposta l'ultimo parametro $globalsu truenon ha alcuna differenza con update_user_meta().

Scopo della update_user_option()funzione

A differenza di altre tabelle, WordPress non crea una tabella separata per usermeta per ciascun sito. Salva le informazioni dell'utente in una tabella usermeta per tutti i blog (in multisito). Fa semplicemente prefisso il nome della chiave per ogni sito, ad blog prefixesempio per l'ID blog 4 wp_capabilitiesviene memorizzato come wp_4_capabilities.

Quindi, qualunque informazione tu salverai usando update_user_option(), per esempio key_name_abcdiventerà wp_key_name_abcper il sito principale in un sito multiplo o nell'installazione di un sito singolo. In futuro, se converti il ​​tuo sito singolo in multisito, le informazioni saranno disponibili solo nel sito principale.

Utilizzare questa funzione quando si ritiene che alcune informazioni siano dipese anche dal sito + utente. Non come nome, email ecc. Perché queste informazioni appartengono all'utente e al sito indipendentemente.


7

Entrambi scrivono i loro dati nella tabella "usermeta". Le opzioni utente memorizzate nella tabella usermeta mantengono il prefisso della tabella wordpress, ad es. Wp_, mentre la meta utente memorizzata nella tabella usermeta no.

Le opzioni utente supportano opzioni specifiche del blog, utili in più siti. Il meta utente si basa sui metadati specifici dell'ID utente come le informazioni del profilo.

I parametri sono piuttosto diversi in effetti. L'opzione utente ha $ user_id, $ option_name, $ newvalue, $ global e user meta ha $ user_id, $ meta_key, $ meta_value, $ prev_value.

Ecco alcuni valori per entrambe le opzioni e l'utente usermeta.

Opzioni

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

Utente

  • nome di battesimo
  • cognome
  • soprannome
  • 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

Gli esempi di pagine di codice forniscono un utilizzo reale.


1
Puoi essere più chiaro su dove sono memorizzati? La tua prima frase suggerisce che sono archiviati nello stesso posto, ma la seconda implica che non lo sono, forse un esempio esplicito sarebbe meglio? Tieni presente che le risposte dovrebbero essere autosufficienti, quindi hanno ancora senso dopo l'inserimento di linkrot. Anche il codice è mal gestito e sostituito dal devhub
Tom J Nowell

@TomJNowell questi possono essere trovati in wp-Includes / user.php - troverai valori sia per meta che per opzioni nella tabella usermeta.
Modificherò la
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.