Может кто - нибудь объяснить , в чем разница между update_user_meta
и update_user_option
и в каких сценариях оба могут быть использованы?
С точки зрения непрофессионала нет большой разницы! 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 не создает отдельную таблицу для 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, а пользовательская мета имеет $ 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
Примеры страниц кодекса обеспечивают реальное использование.