web-dev-qa-db-ja.com

Update_user_metaとupdate_user_optionの違い

update_user_metaupdate_user_optionの違いは何ですか、またどちらのシナリオで両方を使用できるかを誰かが説明できますか?

10
mpsbhat

素人の言葉では大きな違いはありません! update_user_option()は内部的にupdate_user_meta()を使用します。唯一の違いは、マルチサイトの場合はupdate_user_option()オプション名の前にデータベーステーブルのプレフィックス+ blog 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以外の場合のみ)。

最後のパラメータ$globaltrueに設定した場合、それはupdate_user_meta()と違いはありません。

update_user_option()関数の目的

他のテーブルとは異なり、WordPressは各サイトのusermetaに対して別々のテーブルを作成しません。それはすべてのブログのための1つのusermetaテーブルにユーザー情報を保存します(マルチサイトで)。各サイトのキー名の前にblog prefixを付けるだけです。ブログID 4の場合、wp_capabilitieswp_4_capabilitiesとして格納されます。

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

あなたがいくらかの情報が同様にサイト+ユーザーに依存していると思うとき、この機能を使ってください。これらの情報はユーザーおよびサイトに依存しないため、名前、電子メールなどは好きではありません。

7
Sumit

両方とも「usermeta」テーブルにデータを書き込みます。 usermetaテーブルに格納されているユーザーオプションは、ワードプレステーブルのプレフィックスを保持します。一方、user metaテーブルにも格納されているユーザーmetaはそうではありません。

ユーザーオプションはブログ特有のオプションをサポートし、マルチサイトで役立ちます。ユーザーメタは、プロファイル情報などのユーザーID固有のメタデータに基づいています。

パラメータは実際にはかなり異なります。ユーザーオプションには$ user_id、$ option_name、$ newvalue、$ globalがあり、ユーザーメタには$ user_id、$ meta_key、$ meta_value、$ prev_valueがあります。

これはoptionsとuser usermetaの両方の値です。

オプション

  • wp_user_level
  • wp_user-settings
  • wp_capabilities
  • wp_ユーザー設定時間

ユーザー

  • ファーストネーム
  • 苗字
  • ニックネーム
  • 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

コーデックスページの例は、現実世界での使用方法を示しています。

7
Jarmerson