Kann jemand erklären, was der Unterschied zwischen update_user_meta
und update_user_option
ist 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 für die Datenbanktabelle + die Blog-ID voranstellt, wenn Sie sich an mehreren Standorten befinden, und nur dem Tabellenpräfix, wenn Sie sich an einer einzelnen Site befinden.
Schauen Sie sich den Code von update_user_option()
an
/**
* 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 );
}
Dem 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 true
setzen, hat dies keinen Unterschied zu update_user_meta()
.
Zweck der Funktion update_user_option()
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 mit blog prefix
vorangestellt, z. für die Blog-ID 4 wird wp_capabilities
als wp_4_capabilities
gespeichert.
Alle Informationen, die Sie mit update_user_option()
speichern, z. B. key_name_abc
, werden zu wp_key_name_abc
für den Hauptstandort bei der Installation an mehreren Standorten oder bei der Installation an einem einzelnen Standort. Wenn Sie Ihre einzelne Site in eine Site mit mehreren Sites umwandeln, sind die Informationen künftig nur auf der Haupt-Site verfügbar.
Verwenden Sie diese Funktion, wenn Sie der Meinung sind, dass einige Informationen auch von der Site und dem Benutzer abhängen. Nicht wie Name, E-Mail usw., da diese Informationen vom Benutzer und der Site unabhängig sind.
Beide schreiben ihre Daten in die Tabelle "usermeta". In der usermeta-Tabelle gespeicherte Benutzeroptionen behalten das Präfix der wordpress-Tabelle bei, z. wp_ während das Benutzer-Meta, das ebenfalls in der usermeta-Tabelle gespeichert ist, dies nicht tut.
Benutzeroptionen unterstützen blogspezifische Optionen, die für mehrere Standorte nützlich sind. Das Benutzer-Meta basiert auf den benutzerspezifischen 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 user usermeta.
Optionen
Nutzer
https://codex.wordpress.org/Function_Reference/update_user_option#Parameters
https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters
Die Codex-Seiten-Beispiele bieten eine praktische Anwendung.