Diferença entre update_user_meta e update_user_option

9

Alguém pode explicar qual é a diferença entre update_user_meta e update_user_option e em quais cenários os dois podem ser usados?

    
por mpsbhat 14.05.2016 / 06:30

2 respostas

6

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

Dê uma olhada no 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 o prefixo da tabela + ID do blog (somente quando o ID for diferente de 1 e 0).

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

Finalidade da função update_user_option()

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

Assim, quaisquer informações que você salvará usando update_user_option() , por exemplo, key_name_abc se tornarão wp_key_name_abc para o site principal em vários sites ou em instalação de site único. No futuro, se você converter seu site único em multisite, as informações estarão disponíveis apenas no site principal.

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

    
por Sumit 14.05.2016 / 09:08
6

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 que a meta de usuário também armazenada na tabela usermeta não.

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

Os parâmetros são bastante diferentes na verdade. A opção do usuário tem $ user_id, $ option_name, $ newvalue, $ global e meta do usuário tem $ user_id, $ meta_key, $ meta_value, $ prev_value.

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

Opções

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

Usuário

  • first_name
  • last_name
  • apelido
  • rich_editing
  • show_admin_bar_front
  • admin_color

enlace

enlace

Os exemplos de páginas do códice fornecem uso no mundo real.

    
por Jarmerson 14.05.2016 / 06:55