Różnica między opcją update_user_meta i update_user_option

11

Czy ktoś może wyjaśnić, jaka jest różnica między update_user_metaa update_user_optioni w których scenariuszach zarówno mogą być wykorzystane?

mpsbhat
źródło

Odpowiedzi:

8

W kategoriach laika nie ma zasadniczej różnicy! update_user_option()wykorzystuje update_user_meta()wewnętrznie. Jedyną różnicą jest update_user_option()prefiks nazwy opcji z prefiksem tabeli bazy danych + identyfikator bloga, jeśli jesteś w wielu miejscach, i tylko prefiks tabeli, jeśli jesteś w instalacji pojedynczej witryny.

Spójrz na kod 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 );
}

Twoja nazwa opcji jest poprzedzona prefiksem tabeli + ID bloga (tylko gdy ID jest inne niż 1 i 0).

Jeśli ustawisz ostatni parametr, nie $globalbędzie trueto miało różnicy update_user_meta().

Cel update_user_option()funkcji

W przeciwieństwie do innych tabel, WordPress nie tworzy osobnej tabeli dla usermeta dla każdej witryny. Zapisuje informacje o użytkowniku w jednej tabeli usermeta dla wszystkich blogów (w wielu witrynach). Po prostu poprzedza nazwę klucza dla każdej strony, blog prefixnp. Dla bloga o identyfikatorze 4 wp_capabilitiesjest przechowywany jako wp_4_capabilities.

Tak więc wszelkie informacje, które zaoszczędzisz update_user_option(), na przykład key_name_abcstaną się wp_key_name_abcdla głównej witryny w instalacji na wielu stronach lub w pojedynczej lokalizacji. W przyszłości, jeśli przekształcisz swoją pojedynczą witrynę na wiele witryn, informacje będą dostępne tylko na stronie głównej.

Użyj tej funkcji, jeśli uważasz, że niektóre informacje zależą również od strony + użytkownika. Nie tak jak imię i nazwisko, adres e-mail itp., Ponieważ informacje te należą do niezależnych użytkowników i witryn.

Sumit
źródło
7

Obaj zapisują swoje dane w tabeli „usermeta”. Opcje użytkownika przechowywane w tabeli usermeta zachowują prefiks tabeli wordpress, np. Wp_, podczas gdy meta użytkownika również przechowywana w tabeli usermeta nie.

Opcje użytkownika obsługują opcje specyficzne dla bloga, przydatne w wielu witrynach. Meta użytkownika jest oparta na meta danych specyficznych dla identyfikatora użytkownika, takich jak informacje w profilu.

Parametry są zupełnie inne. Opcja użytkownika ma $ identyfikator_użytkownika, $ nazwa_opcji, $ nowa wartość, $ globalna, a meta użytkownika ma $ identyfikator_użytkownika, $ klucz_meta, $ wartość_meta, $ poprzednia_wartość.

Oto niektóre wartości obu opcji i usermeta użytkownika.

Opcje

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

Użytkownik

  • Imię
  • nazwisko
  • przezwisko
  • 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

Przykłady stron kodeksu zapewniają rzeczywiste wykorzystanie.

Jarmerson
źródło
1
Czy możesz wyjaśnić, gdzie są one przechowywane? Twoje pierwsze zdanie sugeruje, że są przechowywane w tym samym miejscu, ale twoje drugie sugeruje, że nie są, być może wyraźny przykład byłby lepszy? Należy pamiętać, że odpowiedzi powinny być samodzielne, aby nadal miały sens po włączeniu linkrota. Kodeks jest również źle utrzymany i zastępowany przez devhub
Tom J Nowell
@TomJNowell można je znaleźć w wp-include / user.php - znajdziesz wartości zarówno dla meta, jak i opcji w tabeli usermeta. Zmienię swoją odpowiedź lol
Jarmerson