Unterschied zwischen update_user_meta und update_user_option

11

Kann jemand erklären, was der Unterschied zwischen update_user_metaund update_user_optionund in welchen Szenarien die beiden verwendet werden können?

mpsbhat
quelle

Antworten:

8

Für Laien gibt es keinen großen Unterschied! update_user_option()verwendet update_user_meta()intern. Der einzige Unterschied besteht darin, dass update_user_option()dem Optionsnamen das Präfix der Datenbanktabelle + die Blog-ID vorangestellt wird, wenn Sie sich an mehreren Standorten befinden, und nur das Tabellenpräfix, wenn Sie sich an einem Standort befinden.

Schauen Sie sich den Code von an 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 );
}

Ihrem Optionsnamen wird das Tabellenpräfix + die Blog-ID vorangestellt (nur wenn die ID nicht 1 und 0 ist).

Wenn Sie den letzten Parameter $globalauf setzen true, hat dies keinen Unterschied zu update_user_meta().

Zweck der update_user_option()Funktion

Im Gegensatz zu anderen Tabellen erstellt WordPress nicht für jede Site eine eigene Tabelle für Usermeta. Es speichert Benutzerinformationen in einer Usermeta-Tabelle für alle Blogs (in Multisite). Es wird lediglich der Schlüsselname für jede Site vorangestellt, blog prefixz. B. für Blog-ID 4, wp_capabilitiesals gespeichert wp_4_capabilities.

Alle Informationen, die Sie beispielsweise speichern update_user_option(), key_name_abcwerden wp_key_name_abcfür den Hauptstandort in Multisite- oder Single-Site-Installationen verwendet. Wenn Sie in Zukunft Ihre einzelne Site in eine Multisite konvertieren, sind die Informationen nur auf der Haupt-Site verfügbar.

Verwenden Sie diese Funktion, wenn Sie der Meinung sind, dass einige Informationen auch von Site + Benutzer abhängen. Nicht wie Name, E-Mail usw., da diese Informationen unabhängig von Benutzer und Site sind.

Sumit
quelle
7

Beide schreiben ihre Daten in die Tabelle „usermeta“. In der Usermeta-Tabelle gespeicherte Benutzeroptionen behalten das WordPress-Tabellenpräfix bei, z. B. wp_, während das in der Usermeta-Tabelle ebenfalls gespeicherte Benutzer-Meta dies nicht tut.

Benutzeroptionen unterstützen blogspezifische Optionen, die bei Multisite nützlich sind. Das Benutzer-Meta basiert auf den Benutzer-ID-spezifischen Metadaten wie Profilinformationen.

Die Parameter sind in der Tat sehr unterschiedlich. Die Benutzeroption hat $ user_id, $ option_name, $ newvalue, $ global und das Benutzer-Meta hat $ user_id, $ meta_key, $ meta_value, $ prev_value.

Hier sind einige Werte für beide Optionen und Benutzerbenutzer.

Optionen

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

Benutzer

  • Vorname
  • Familienname, Nachname
  • Spitzname
  • 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

Die Beispiele für Codex-Seiten bieten eine reale Verwendung.

Jarmerson
quelle
1
Können Sie klarer sagen, wo diese gespeichert sind? Ihr erster Satz legt nahe, dass sie am selben Ort gespeichert sind, Ihr zweiter impliziert jedoch, dass dies nicht der Fall ist. Vielleicht wäre ein explizites Beispiel besser? Denken Sie daran, dass Antworten in sich geschlossen sein sollten, damit sie auch nach dem Einsetzen von Linkrot noch Sinn machen. Der Kodex wird ebenfalls schlecht gepflegt und durch den Devhub ersetzt
Tom J Nowell
@TomJNowell diese finden Sie in wp-includes / user.php - Sie finden Werte für Meta und Optionen in der Usermeta-Tabelle. Ich werde meine Antwort bearbeiten lol
Jarmerson