函数文档

set_user_setting()

💡 云策文档标注

概述

set_user_setting() 函数用于添加或更新用户界面设置,适用于 WordPress 开发者管理用户偏好。它必须在输出开始前调用,以避免 headers_sent() 问题。

关键要点

  • 函数用途:添加或更新用户界面设置,参数 $name 和 $value 仅支持 ASCII 字母、数字、连字符和下划线。
  • 调用时机:必须在任何输出开始前使用,因为它内部调用 setcookie(),否则会因 headers_sent() 返回 false。
  • 返回值:成功时返回 true,失败返回 false;如果当前用户不是站点成员,则返回 null。
  • 相关函数:与 get_all_user_settings() 和 wp_set_all_user_settings() 配合使用,用于获取和设置所有用户设置。

代码示例

/**
 * Re-set user setting to always collapse the admin menu.
 *
 * @see set_user_setting()
 */
function wpdocs_always_collapse_menu() {
    if ( 'f' != get_user_setting( 'mfold' ) ) {
        set_user_setting( 'mfold', 'f' );
    }
}
add_action( 'admin_head', 'wpdocs_always_collapse_menu' );

注意事项

  • 确保在调用 set_user_setting() 前没有输出任何内容,否则可能因 cookie 设置失败而返回 false。
  • 参数 $name 和 $value 应严格遵循 ASCII 字符限制,避免使用特殊字符导致错误。

📄 原文内容

Adds or updates user interface setting.

Description

Both $name and $value can contain only ASCII letters, numbers, hyphens, and underscores.

This function has to be used before any output has started as it calls setcookie().

Parameters

$namestringrequired
The name of the setting.
$valuestringrequired
The value for the setting.

Return

bool|null True if set successfully, false otherwise.
Null if the current user is not a member of the site.

Source

function set_user_setting( $name, $value ) {
	if ( headers_sent() ) {
		return false;
	}

	$all_user_settings          = get_all_user_settings();
	$all_user_settings[ $name ] = $value;

	return wp_set_all_user_settings( $all_user_settings );
}

Changelog

Version Description
2.8.0 Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Override the user setting to always collapse the admin menu for the current user:

    /**
     * Re-set user setting to always collapse the admin menu.
     *
     * @see set_user_setting()
     */
    function wpdocs_always_collapse_menu() {
    	if ( 'f' != get_user_setting( 'mfold' ) ) {
    		set_user_setting( 'mfold', 'f' );
    	}
    }
    add_action( 'admin_head', 'wpdocs_always_collapse_menu' );