Perbedaan antara update_user_meta dan update_user_option


11

Adakah yang bisa menjelaskan apa perbedaan antara update_user_metadan update_user_optiondan dalam skenario mana keduanya bisa digunakan?

Jawaban:


8

Dalam istilah awam tidak ada perbedaan besar! update_user_option()gunakan secara update_user_meta()internal. Satu-satunya perbedaan adalah update_user_option()awalan nama opsi dengan awalan tabel database + ID blog jika Anda berada di multisite dan hanya awalan tabel jika Anda berada di instalasi satu situs.

Lihatlah kode 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 );
}

Nama opsi Anda diawali dengan awalan tabel + ID blog (Hanya ketika ID selain 1 dan 0).

Jika Anda menetapkan parameter terakhir $globaluntuk truetidak memiliki perbedaan dengan update_user_meta().

Tujuan update_user_option()fungsi

Tidak seperti tabel lainnya, WordPress tidak membuat tabel terpisah untuk usermeta untuk setiap situs. Ini menyimpan informasi pengguna dalam satu tabel usermeta untuk semua blog (dalam multisite). Itu hanya awalan nama kunci untuk setiap situs dengan blog prefixmisalnya untuk ID blog 4 wp_capabilitiesdisimpan sebagai wp_4_capabilities.

Jadi, informasi apa pun yang akan Anda simpan menggunakan update_user_option(), misalnya key_name_abcakan menjadi wp_key_name_abcuntuk situs utama dalam multisite atau dalam instalasi situs tunggal. Di masa depan jika Anda mengonversi situs tunggal ke multisite, informasi itu hanya akan tersedia di situs utama.

Gunakan fungsi ini ketika Anda berpikir beberapa informasi tergantung pada situs + pengguna juga. Tidak suka nama, email dll karena informasi ini milik pengguna dan situs independen.


7

Keduanya menulis data mereka di tabel "usermeta". Opsi pengguna yang disimpan dalam tabel usermeta mempertahankan awalan tabel wordpress mis. Wp_ sedangkan meta pengguna juga disimpan dalam tabel usermeta tidak.

Opsi pengguna mendukung opsi spesifik blog, berguna untuk multisite. Meta pengguna didasarkan pada data meta spesifik pengguna id seperti informasi profil.

Parameter sebenarnya sangat berbeda. Opsi pengguna memiliki $ user_id, $ option_name, $ newvalue, $ global dan meta pengguna memiliki $ user_id, $ meta_key, $ meta_value, $ prev_value.

Berikut adalah beberapa nilai untuk opsi dan pengguna usermeta.

Pilihan

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

Pengguna

  • nama depan
  • nama keluarga
  • nama panggilan
  • 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

Contoh halaman codex menyediakan penggunaan dunia nyata.


1
Bisakah Anda lebih jelas tentang di mana ini disimpan? Kalimat pertama Anda menunjukkan bahwa mereka disimpan di tempat yang sama, tetapi yang kedua menyiratkan tidak, mungkin contoh eksplisit akan lebih baik? Ingatlah bahwa jawaban harus lengkap, sehingga masih masuk akal setelah tautan masuk. Kodeks ini juga tidak dirawat dengan baik dan digantikan oleh devhub
Tom J Nowell

@ TomJNowell ini dapat ditemukan di wp-include / user.php - Anda akan menemukan nilai untuk meta dan opsi di tabel usermeta. Saya akan mengedit jawaban saya lol
Jarmerson
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.