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の個別のテーブルを作成しません。(マルチサイト内の)すべてのブログの1つのusermetaテーブルにユーザー情報を保存します。blog prefixたとえば、各サイトのキー名の前に、ブログID 4 wp_capabilitiesがとして保存されwp_4_capabilitiesます。

したがってupdate_user_option()、たとえばkey_name_abcを使用して保存する情報はすべてwp_key_name_abc、マルチサイトまたはシングルサイトインストールのメインサイトになります。今後、単一サイトをマルチサイトに変換すると、情報はメインサイトでのみ利用可能になります。

一部の情報がサイト+ユーザーにも依存していると思われる場合は、この関数を使用します。これらの情報はユーザーとサイトに依存しないため、名前やメールなどとは異なります。


7

どちらも「usermeta」テーブルにデータを書き込みます。usermetaテーブルに保存されているユーザーオプションは、wp_などのwordpressテーブルプレフィックスを保持しますが、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-time

ユーザー

  • ファーストネーム
  • 苗字
  • ニックネーム
  • 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
これらがどこに保存されているかを明確にできますか?最初の文はそれらが同じ場所に保存されていることを示唆していますが、2番目の文はそうではないことを示唆しています。おそらく明示的な例がより良いでしょうか?回答は自己完結型である必要があることに注意してください。linkrotが設定された後も回答は有効です。コーデックスも維持管理が不十分で、devhubに置き換えられています
Tom J Nowell

@TomJNowellこれらはwp-includes / user.phpにあります-usermetaテーブルにメタとオプションの両方の値があります。私は私の答えを編集しますlol
ジャーマーソン2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.