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. Это особенно полезно, если вы хотите создать уникальные настройки для каждого сайта сети или наоборот, задать общие параметры для всей сети.