Sự khác biệt giữa update_user_meta và update_user_option


11

Bất cứ ai có thể giải thích sự khác biệt giữa là những gì update_user_metaupdate_user_optionvà trong đó kịch bản của cả hai có thể được sử dụng?

Câu trả lời:


8

Trong điều khoản cư sĩ không có sự khác biệt lớn! update_user_option()sử dụng update_user_meta()nội bộ. Sự khác biệt duy nhất là update_user_option()tiền tố tên tùy chọn với tiền tố bảng cơ sở dữ liệu + ID blog nếu bạn đang ở trong nhiều trang và chỉ là tiền tố bảng nếu bạn đang cài đặt một trang web.

Hãy xem mã của 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 );
}

Tên tùy chọn của bạn được thêm tiền tố với tiền tố bảng + ID blog (Chỉ khi ID khác 1 và 0).

Nếu bạn thiết lập các tham số cuối cùng $globalđể truenó không có sự khác biệt với update_user_meta().

Mục đích của update_user_option()chức năng

Không giống như các bảng khác, WordPress không tạo bảng riêng cho usermeta cho mỗi trang. Nó lưu thông tin người dùng trong một bảng usermeta cho tất cả các blog (trong nhiều trang). Nó chỉ tiền tố tên khóa cho mỗi trang web, blog prefixví dụ như ID blog 4 wp_capabilitiesđược lưu trữ dưới dạng wp_4_capabilities.

Vì vậy, bất kỳ thông tin nào bạn sẽ lưu bằng cách sử dụng update_user_option(), ví dụ key_name_abcsẽ trở thành wp_key_name_abctrang web chính trong nhiều trang hoặc trong cài đặt trang web đơn. Trong tương lai nếu bạn chuyển đổi trang web duy nhất của mình sang nhiều trang, thông tin sẽ chỉ có sẵn trong trang web chính.

Sử dụng chức năng này khi bạn nghĩ rằng một số thông tin cũng phụ thuộc vào trang web + người dùng. Không thích tên, email vv vì những thông tin này thuộc về người dùng và trang web độc lập.


7

Cả hai đều ghi dữ liệu của họ vào bảng Us usetaeta. Tùy chọn người dùng được lưu trữ trong bảng usermeta giữ lại tiền tố của bảng wordpress, ví dụ như wp_ trong khi meta người dùng cũng được lưu trữ trong bảng usermeta thì không.

Tùy chọn người dùng hỗ trợ các tùy chọn dành riêng cho blog, hữu ích trong nhiều trang. Meta người dùng dựa trên dữ liệu meta cụ thể của id người dùng như thông tin hồ sơ.

Các thông số khá khác nhau trong thực tế. Tùy chọn người dùng có $ user_id, $ option_name, $ newvalue, $ global và người dùng meta có $ user_id, $ meta_key, $ meta_value, $ trước_value.

Dưới đây là một số giá trị cho cả hai tùy chọn và người dùng usermeta.

Tùy chọn

  • wp_user_level
  • wp_user-settings
  • wp_capabilities
  • wp_user-settings-time

Người dùng

  • tên đầu tiên
  • Last_name
  • tên nick
  • giàu_editing
  • show_admin_bar_front
  • quản trị viên màu

https://codex.wordpress.org/Function_Reference/update_user_option#Parameter

https://codex.wordpress.org/Function_Reference/update_user_meta#Parameter

Các ví dụ trang codex cung cấp sử dụng thế giới thực.


1
Bạn có thể rõ ràng hơn về nơi được lưu trữ? Câu đầu tiên của bạn cho thấy chúng được lưu trữ ở cùng một nơi, nhưng câu thứ hai của bạn ngụ ý rằng chúng không phải, có lẽ một ví dụ rõ ràng sẽ tốt hơn? Hãy nhớ rằng các câu trả lời nên được khép kín, vì vậy chúng vẫn có ý nghĩa sau khi bộ liên kết được đặt vào. Bộ mã cũng được duy trì kém và được thay thế bởi devhub
Tom J Nowell

@TomJNowell chúng có thể được tìm thấy trong wp-gộp / user.php - bạn sẽ tìm thấy các giá trị cho cả meta và tùy chọn trong bảng usermeta. Tôi sẽ chỉnh sửa câu trả lời của tôi lol
Jarmerson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.