wp_ajax_save_user_color_scheme()
云策文档标注
概述
wp_ajax_save_user_color_scheme() 是一个 WordPress AJAX 处理函数,用于自动保存用户个人资料中选择的颜色方案。它验证请求、处理颜色方案数据,并更新用户元数据。
关键要点
- 函数通过 AJAX 处理用户颜色方案的自保存,确保仅处理当前用户的请求。
- 使用 check_ajax_referer() 验证 nonce 以防止外部请求,确保安全性。
- 通过 sanitize_key() 清理颜色方案键值,并检查其是否在 $_wp_admin_css_colors 中有效。
- 使用 get_user_meta() 和 update_user_meta() 获取和更新用户的 admin_color 元数据。
- 返回 JSON 响应,包括前一个和当前颜色方案的标识符,使用 wp_send_json_success() 或 wp_send_json_error() 指示操作结果。
代码示例
function wp_ajax_save_user_color_scheme() {
global $_wp_admin_css_colors;
check_ajax_referer( 'save-color-scheme', 'nonce' );
$color_scheme = sanitize_key( $_POST['color_scheme'] );
if ( ! isset( $_wp_admin_css_colors[ $color_scheme ] ) ) {
wp_send_json_error();
}
$previous_color_scheme = get_user_meta( get_current_user_id(), 'admin_color', true );
update_user_meta( get_current_user_id(), 'admin_color', $color_scheme );
wp_send_json_success(
array(
'previousScheme' => 'admin-color-' . $previous_color_scheme,
'currentScheme' => 'admin-color-' . $color_scheme,
)
);
}注意事项
- 此函数依赖于全局变量 $_wp_admin_css_colors,需确保其已定义且包含有效的颜色方案。
- AJAX 请求必须包含正确的 nonce 和 color_scheme 参数,否则可能导致验证失败或错误响应。
- 函数自 WordPress 3.8.0 版本引入,使用时需考虑版本兼容性。
原文内容
Handles auto-saving the selected color scheme for a user’s own profile via AJAX.
Source
function wp_ajax_save_user_color_scheme() {
global $_wp_admin_css_colors;
check_ajax_referer( 'save-color-scheme', 'nonce' );
$color_scheme = sanitize_key( $_POST['color_scheme'] );
if ( ! isset( $_wp_admin_css_colors[ $color_scheme ] ) ) {
wp_send_json_error();
}
$previous_color_scheme = get_user_meta( get_current_user_id(), 'admin_color', true );
update_user_meta( get_current_user_id(), 'admin_color', $color_scheme );
wp_send_json_success(
array(
'previousScheme' => 'admin-color-' . $previous_color_scheme,
'currentScheme' => 'admin-color-' . $color_scheme,
)
);
}
Changelog
| Version | Description |
|---|---|
| 3.8.0 | Introduced. |