函数文档

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.