update_user_option( int $user_id, string $option_name, mixed $newvalue, bool $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 ‘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.

Top ↑


$user_id int Required
User ID.
$option_name string Required
User option name.
$newvalue mixed Required
User option value.
$global bool Optional
Whether option name is global or blog specific.
Default false (blog specific).

Default: false

Top ↑


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

Top ↑


File: wp-includes/user.php. View all references

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

Top ↑


Version Description
2.0.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Codex

    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.