update_user_option()
— это функция WordPress, которая позволяет обновить опцию пользователя (метаполе) с возможностью установки глобальной опции для всей сети сайтов в мультисайтовом режиме. Данная функция представляет собой обёртку для update_user_meta()
и добавляет поддержку префиксов таблиц базы данных для опций, если $is_global
установлен в false
(значение по умолчанию).
update_user_option( int $user_id, string $option_name, mixed $newvalue, bool $is_global = false ): int|bool
$user_id
(int) — обязательный параметр, ID пользователя, чью опцию нужно обновить.$option_name
(string) — обязательное имя опции.$newvalue
(mixed) — новое значение опции, может быть любого типа.$is_global
(bool) — необязательный параметр, указывает, является ли опция глобальной (для всей сети сайтов). По умолчаниюfalse
(опция специфична для текущего сайта).
Возвращаемое значение
- Возвращает ID метаполя в случае создания новой записи.
true
при успешном обновлении.false
при ошибке.
Если передано пустое значение для $newvalue
, опция будет удалена.
Примеры использования
- Скрыть панель администратора на фронтенде для пользователя Чтобы скрыть панель администратора на фронтенде для пользователя, можно использовать следующий код:
update_user_option( 15, 'show_admin_bar_front', false );
В этом случае, если значение $is_global
не указано (по умолчанию false
), WordPress добавит префикс таблицы базы данных, и опция станет специфичной для текущего сайта.
- Скрыть панель администратора для всей сети сайтов В случае мультисайтовой установки, можно использовать глобальную опцию для всей сети, передав параметр
$is_global
вtrue
:
update_user_option( 20, 'show_admin_bar_front', false, true );
Теперь опция show_admin_bar_front
будет применена ко всем сайтам сети для пользователя с ID 20.
- Добавление пользовательской опции с префиксом Если нужно создать пользовательскую опцию с префиксом таблицы базы данных, используйте следующую конструкцию:
update_user_option( 7, 'custom_theme_color', '#ff5733' );
Для пользователя с ID 7 добавится опция wp_custom_theme_color
(где wp_
— префикс базы данных), и она будет доступна только на текущем сайте.
- Создание глобальной пользовательской опции Если требуется создать глобальную опцию, идентичную
update_user_meta()
, можно задать$is_global
вtrue
:
update_user_option( 12, 'favorite_category', 'technology', true );
Опция favorite_category
добавится для пользователя с ID 12 и будет доступна на всех сайтах сети.
- Удаление опции пользователя Для удаления опции, достаточно передать пустое значение
$newvalue
:
update_user_option( 9, 'newsletter_subscription', '' );
- Опция
newsletter_subscription
для пользователя с ID 9 будет удалена.
Принцип работы
- Если
$is_global = false
, WordPress добавляет префикс таблицы базы данных (например,wp_
) к названию опции, делая её уникальной для конкретного сайта. - При
$is_global = true
, функция идентичнаupdate_user_meta()
, и название опции остаётся таким, как указано.
Заключение
Функция update_user_option()
— мощный инструмент для управления пользовательскими настройками с учётом специфики мультисайтовой установки WordPress. Это особенно полезно, если вы хотите создать уникальные настройки для каждого сайта сети или наоборот, задать общие параметры для всей сети.