update_user_option()WP 2.0.0

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 'is_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.

No Hooks.


Int|true|false. User meta ID if the option didn't exist, true on successful update, false on failure.


update_user_option( $user_id, $option_name, $newvalue, $is_global );
$user_id(int) (required)
User ID.
$option_name(string) (required)
User option name.
$newvalue(mixed) (required)
User option value.
Whether option name is global or blog specific.
Default: false (blog specific)



#1 Add option prefix_test_option for user with ID 1

update_user_option( 1, 'test_option', 'my_value' );
// User 1 will have a wp_test_option meta-field with the value my_value
// wp_ here is the database prefix

#2 Add option test_option for user with ID 1

update_user_option( 1, 'test_option',  'my_value', true );
// analogue of update_user_meta() - user 1 will have
// test_option meta-field with my_value

#3 Hide the admin bar for a user on the front end of the site:

update_user_option( $user_id, 'show_admin_bar_front', false );

When multisite is installed, the $global parameter can be used to set the user option for the whole network, instead of just the current site:

update_user_option( $user_id, 'show_admin_bar_front', false, true );


  • Global. wpdb. $wpdb WordPress database abstraction object.


Since 2.0.0 Introduced.

update_user_option() code WP 6.4.3

function update_user_option( $user_id, $option_name, $newvalue, $is_global = false ) {
	global $wpdb;

	if ( ! $is_global ) {
		$option_name = $wpdb->get_blog_prefix() . $option_name;

	return update_user_meta( $user_id, $option_name, $newvalue );