ทุกคนสามารถอธิบายว่าอะไรคือความแตกต่างระหว่างupdate_user_meta
และupdate_user_option
กับสถานการณ์ใดที่สามารถใช้ทั้งสองได้
ทุกคนสามารถอธิบายว่าอะไรคือความแตกต่างระหว่างupdate_user_meta
และupdate_user_option
กับสถานการณ์ใดที่สามารถใช้ทั้งสองได้
คำตอบ:
ในแง่คนธรรมดาไม่มีความแตกต่างที่สำคัญ! 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
เช่นการบล็อกหมายเลข 4 ถูกเก็บไว้เป็นwp_capabilities
wp_4_capabilities
ดังนั้นข้อมูลใดที่คุณจะบันทึกโดยใช้update_user_option()
ตัวอย่างเช่นkey_name_abc
จะกลายเป็นwp_key_name_abc
ไซต์หลักในหลายไซต์หรือในการติดตั้งไซต์เดียว ในอนาคตหากคุณแปลงไซต์เดียวเป็นหลายไซต์ข้อมูลจะมีเฉพาะในไซต์หลักเท่านั้น
ใช้ฟังก์ชั่นนี้เมื่อคุณคิดว่าข้อมูลบางอย่างนั้นขึ้นอยู่กับผู้ใช้ + ไซต์เช่นกัน ไม่เหมือนชื่ออีเมล ฯลฯ เนื่องจากข้อมูลเหล่านี้เป็นของผู้ใช้และไซต์อิสระ
ทั้งคู่เขียนข้อมูลลงในตาราง“ usermeta” ตัวเลือกผู้ใช้ที่เก็บไว้ในตาราง usermeta จะรักษาคำนำหน้าตาราง WordPress เช่น wp_ ในขณะที่เมตาผู้ใช้ยังเก็บไว้ในตาราง usermeta ไม่ได้
ตัวเลือกผู้ใช้รองรับตัวเลือกเฉพาะบล็อกมีประโยชน์ในหลายไซต์ เมตาของผู้ใช้ขึ้นอยู่กับข้อมูลเมตาเฉพาะของผู้ใช้เช่นข้อมูลโปรไฟล์
ความจริงแล้วพารามิเตอร์ต่างกันมาก ตัวเลือกผู้ใช้มี $ user_id, $ option_name, $ newvalue, $ global และ meta ผู้ใช้มี $ user_id, $ meta_key, $ meta_value, $ prev_value
นี่คือค่าบางอย่างสำหรับทั้งตัวเลือกและผู้ใช้ usermeta
ตัวเลือก
ผู้ใช้งาน
https://codex.wordpress.org/Function_Reference/update_user_option#Parameters
https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters
ตัวอย่างหน้า codex ช่วยให้ใช้งานได้จริง