update_user_meta와 update_user_option의 차이점


11

사람 사이의 차이는 무엇인가 설명 할 수 update_user_metaupdate_user_option양이 사용될 수있는 시나리오는?

답변:


8

평신도 용어로는 큰 차이가 없습니다! 내부적으로 update_user_option()사용합니다 update_user_meta(). 유일한 차이점은 update_user_option()다중 사이트에있는 경우 데이터베이스 테이블 접두사 + 블로그 ID가있는 옵션 이름 접두사와 단일 사이트 설치에있는 경우 테이블 접두사뿐입니다.

의 코드를 살펴보십시오 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 );
}

옵션 이름 앞에 테이블 접두사 + 블로그 ID (ID가 1과 0 이외의 경우에만)가 붙습니다.

마지막 매개 변수 $global를 설정 true하면와 아무런 차이가 없습니다 update_user_meta().

update_user_option()기능의 목적

다른 테이블과 달리 WordPress는 각 사이트의 usermeta에 대해 별도의 테이블을 만들지 않습니다. 모든 블로그 (멀티 사이트)에 대해 하나의 usermeta 테이블에 사용자 정보를 저장합니다. blog prefix예를 들어 블로그 ID 4 와 같이 각 사이트의 키 이름 앞에 접두사 wp_capabilities가로 저장됩니다 wp_4_capabilities.

어떤 정보 그래서 당신은 사용하여 저장됩니다 update_user_option()예를 들어 key_name_abc이 될 것이다 wp_key_name_abc다중 또는 단일 사이트 설치의 주요 사이트. 나중에 단일 사이트를 다중 사이트로 변환하면 기본 사이트에서만 정보를 사용할 수 있습니다.

일부 정보가 사이트 + 사용자에 의존한다고 생각할 때이 기능을 사용하십시오. 이러한 정보는 사용자와 사이트에 독립적이기 때문에 이름, 이메일과는 다릅니다.


7

둘 다 "usermeta"테이블에 데이터를 씁니다. usermeta 테이블에 저장된 사용자 옵션은 wordpress 테이블 접두사 (예 : wp_)를 유지하지만 usermeta 테이블에 저장된 사용자 메타는 그렇지 않습니다.

사용자 옵션은 다중 사이트에서 유용한 블로그 별 옵션을 지원합니다. 사용자 메타는 프로필 정보와 같은 사용자 ID 특정 메타 데이터를 기반으로합니다.

매개 변수는 실제로 상당히 다릅니다. 사용자 옵션에는 $ user_id, $ option_name, $ newvalue, $ global이 있고 사용자 메타에는 $ user_id, $ meta_key, $ meta_value, $ prev_value가 있습니다.

다음은 옵션과 사용자 usermeta 모두에 대한 값입니다.

옵션

  • wp_user_level
  • wp_user-settings
  • wp_capabilities
  • wp_user-settings- 시간

사용자

  • 이름
  • 별명
  • 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

코덱스 페이지 예제는 실제 사용을 제공합니다.


1
이것들이 어디에 저장되어 있는지 더 명확하게 알 수 있습니까? 첫 번째 문장은 같은 장소에 저장되어 있다고 제안하지만 두 번째 문장은 그렇지 않다는 것을 암시합니다. 아마도 명백한 예가 더 좋을까요? 답변은 자체적으로 포함되어야하므로 링크 로트가 설정된 후에도 여전히 의미가 있습니다. 코덱도 제대로 유지 관리되지 않고 devhub으로 대체되었습니다.
Tom J Nowell

@TomJNowell 이것들은 wp-includes / user.php에서 찾을 수 있습니다-usermeta 테이블에서 메타 값과 옵션 값을 찾을 수 있습니다. 내 답변을 편집하겠습니다 lol
Jarmerson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.