Kann jemand erklären, was der Unterschied zwischen update_user_meta
und update_user_option
und in welchen Szenarien die beiden verwendet werden können?
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 $global
auf 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 prefix
z. B. für Blog-ID 4, wp_capabilities
als gespeichert wp_4_capabilities
.
Alle Informationen, die Sie beispielsweise speichern update_user_option()
, key_name_abc
werden wp_key_name_abc
fü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.
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
Benutzer
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.