update_user_meta
とupdate_user_option
の違いは何ですか、またどちらのシナリオで両方を使用できるかを誰かが説明できますか?
素人の言葉では大きな違いはありません! 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以外の場合のみ)。
最後のパラメータ$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
になります。将来あなたがあなたの単一のサイトをマルチサイトに変換するならば、情報はメインサイトでのみ利用可能になるでしょう。
あなたがいくらかの情報が同様にサイト+ユーザーに依存していると思うとき、この機能を使ってください。これらの情報はユーザーおよびサイトに依存しないため、名前、電子メールなどは好きではありません。
両方とも「usermeta」テーブルにデータを書き込みます。 usermetaテーブルに格納されているユーザーオプションは、ワードプレステーブルのプレフィックスを保持します。一方、user metaテーブルにも格納されているユーザーmetaはそうではありません。
ユーザーオプションはブログ特有のオプションをサポートし、マルチサイトで役立ちます。ユーザーメタは、プロファイル情報などのユーザーID固有のメタデータに基づいています。
パラメータは実際にはかなり異なります。ユーザーオプションには$ user_id、$ option_name、$ newvalue、$ globalがあり、ユーザーメタには$ user_id、$ meta_key、$ meta_value、$ prev_valueがあります。
これはoptionsとuser usermetaの両方の値です。
オプション
ユーザー
https://codex.wordpress.org/Function_Reference/update_user_option#Parameters
https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters
コーデックスページの例は、現実世界での使用方法を示しています。