Різниця між update_user_meta та update_user_option


11

Може хто - небудь пояснити , в чому різниця між update_user_metaі update_user_optionі в яких сценаріях обидва можуть бути використані?

Відповіді:


8

У простому плані немає великої різниці! update_user_option()використовує update_user_meta()внутрішньо. Єдина відмінність - update_user_option()префікс ім'я параметра з префіксом таблиці баз даних + ідентифікатором блогу, якщо ви перебуваєте в багатосайтовому і просто префіксі таблиці, якщо ви перебуваєте в інсталяції одного сайту.

Погляньте на код коду 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 );
}

Ім'я вашого параметра є префіксом префікса таблиці + ідентифікатора блогу (лише тоді, коли ідентифікатор відрізняється від 1 та 0).

Якщо ви встановите останній параметр $globalдля trueнього не має ніякого значення , з update_user_meta().

Призначення update_user_option()функції

На відміну від інших таблиць, WordPress не створює окремої таблиці для користувачамета для кожного сайту. Він зберігає інформацію про користувачів в одній таблиці користувачів користувачів для всіх блогів (у багатосторонніх сайтах). Це просто префікс ключового імені для кожного сайту, blog prefixнаприклад, для блогу ID 4 wp_capabilitiesзберігається як wp_4_capabilities.

Отже, будь-яка інформація, яку ви збережете, використовуючи update_user_option(), наприклад key_name_abc, стане wp_key_name_abcдля головного сайту у багатосайтовій або на одному веб-сайті. Надалі, якщо ви конвертуєте ваш єдиний сайт у багатомісний сайт, інформація буде доступна лише на головному сайті.

Використовуйте цю функцію, якщо ви думаєте, що певна інформація залежить також від сайту + користувача. Не так, як ім’я, електронна пошта тощо, оскільки ця інформація належить користувачеві та сайту незалежно.


7

Обидва записують свої дані в таблицю “usermeta”. Параметри користувача, збережені в таблиці usermeta, зберігають префікс таблиці wordpress, наприклад, wp_, тоді як мета користувача, що також зберігається в таблиці usermeta, відсутня.

Користувацькі параметри підтримують конкретні параметри блогу, корисні в багатосайтовій мережі. Мета користувача базується на специфічних метаданих для ідентифікатора користувача, таких як інформація про профіль.

Насправді параметри зовсім інші. Опція користувача має $ user_id, $ option_name, $ newvalue, $ global, а мета мета має $ user_id, $ meta_key, $ meta_value, $ prev_value.

Ось деякі значення як для параметрів, так і для користувача usermeta.

Параметри

  • wp_user_level
  • wp_user-settings
  • wp_capability
  • wp_user-settings-time

Користувач

  • ім'я
  • прізвище
  • прізвисько
  • 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

Приклади сторінок кодексу забезпечують використання в реальному світі.


1
Чи можете ви зрозуміти, де вони зберігаються? Ваше перше речення підказує, що вони зберігаються там же, але друге означає, що це не так, можливо, явний приклад був би кращим? Майте на увазі, що відповіді повинні міститись самостійно, тому вони все ще мають сенс після встановлення посилань. Кодекс також погано підтримується і його замінює девхуб
Том Дж. Ноуелл

@TomJNowell їх можна знайти в wp-include / user.php - у таблиці usermeta ви знайдете значення як мета, так і параметрів. Я відредагую свою відповідь лол
Джармерсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.