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 '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, $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.1.1

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 );