update_user_option( int $user_id, string $option_name, mixed $newvalue, bool $is_global = false ): int|bool

Updates 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.


User ID.
User option name.
User option value.
Whether option name is global or blog specific.
Default false (blog specific).



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



User Contributed Notes

  1. Skip to note 2 content

    Basic Example

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

You must log in before being able to contribute a note or feedback.