Diferença entre update_user_meta e update_user_option

11

Alguém pode explicar o que é a diferença entre update_user_metae update_user_optione em que cenários a ambos podem ser usados?

mpsbhat
fonte

Respostas:

8

Em termos leigos, não há grande diferença! update_user_option()usa update_user_meta()internamente. A única diferença é o update_user_option()prefixo do nome da opção com prefixo da tabela do banco de dados + ID do blog se você estiver em vários locais e apenas o prefixo da tabela se estiver na instalação de site único.

Veja o código de 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 );
}

O nome da sua opção é prefixado com prefixo da tabela + ID do blog (apenas quando o ID for diferente de 1 e 0).

Se você definir o último parâmetro $globalpara trueele, não haverá diferença com update_user_meta().

Objetivo da update_user_option()função

Ao contrário de outras tabelas, o WordPress não cria tabela separada para meta de usuário para cada site. Ele salva as informações do usuário em uma tabela de usermeta para todos os blogs (em vários sites). Apenas prefixa o nome da chave de cada site, por blog prefixexemplo, para o ID do blog 4, wp_capabilitiesé armazenado como wp_4_capabilities.

Portanto, qualquer informação que você salvar usando update_user_option(), por exemplo, key_name_abcse tornará wp_key_name_abcpara o site principal em instalação multisite ou em site único. No futuro, se você converter seu site único em vários locais, as informações estarão disponíveis apenas no site principal.

Use esta função quando achar que algumas informações dependem do site + usuário também. Não é como o nome, email, etc, porque essas informações pertencem ao usuário e ao site.

Sumit
fonte
7

Ambos escrevem seus dados na tabela "usermeta". As opções do usuário armazenadas na tabela usermeta mantêm o prefixo da tabela wordpress, por exemplo, wp_, enquanto a meta do usuário também armazenada na tabela usermeta não.

As opções do usuário suportam opções específicas do blog, úteis em vários sites. A meta do usuário é baseada nos metadados específicos da ID do usuário, como informações do perfil.

Os parâmetros são bem diferentes de fato. A opção do usuário possui $ user_id, $ option_name, $ newvalue, $ global e a meta do usuário possui $ user_id, $ meta_key, $ meta_value, $ prev_value.

Aqui estão alguns valores para as opções e o usermeta do usuário.

Opções

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

Do utilizador

  • primeiro nome
  • último nome
  • apelido
  • 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

Os exemplos de páginas do codex fornecem uso no mundo real.

Jarmerson
fonte
11
Você pode ser mais claro sobre onde eles estão armazenados? Sua primeira frase sugere que elas estão armazenadas no mesmo local, mas sua segunda implica que não, talvez um exemplo explícito seria melhor? Tenha em mente que respostas devem ser auto-suficientes, então eles continuam a fazer sentido depois de conjuntos linkrot no Codex também é mal conservada e sendo substituído pelo devhub.
Tom J Nowell
@ TomJNowell, estes podem ser encontrados em wp-includes / user.php - você encontrará valores para meta e opções na tabela usermeta. Eu vou editar a minha resposta lol
Jarmerson 14/05