保存并恢复存储在cookie中的用户界面设置。

原型

wp_user_settings()

描述

检查当前用户设置cookie是否已更新并存储。如果不存在cookie(使用不同的浏览器),则添加上次保存的cookie以恢复设置。

源文件

路径:wp-includes/option.php

<?php
...
function wp_user_settings() {
	if ( ! is_admin() || wp_doing_ajax() ) {
		return;
	}
	if ( ! $user_id = get_current_user_id() ) {
		return;
	}
	if ( ! is_user_member_of_blog() ) {
		return;
	}
	$settings = (string) get_user_option( 'user-settings', $user_id );
	if ( isset( $_COOKIE['wp-settings-' . $user_id] ) ) {
		$cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user_id] );
		// No change or both empty
		if ( $cookie == $settings )
			return;
		$last_saved = (int) get_user_option( 'user-settings-time', $user_id );
		$current = isset( $_COOKIE['wp-settings-time-' . $user_id]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user_id] ) : 0;
		// The cookie is newer than the saved value. Update the user_option and leave the cookie as-is
		if ( $current > $last_saved ) {
			update_user_option( $user_id, 'user-settings', $cookie, false );
			update_user_option( $user_id, 'user-settings-time', time() - 5, false );
			return;
		}
	}
	// The cookie is not set in the current browser or the saved value is newer.
	$secure = ( 'https' === parse_url( admin_url(), PHP_URL_SCHEME ) );
	setcookie( 'wp-settings-' . $user_id, $settings, time() + YEAR_IN_SECONDS, SITECOOKIEPATH, null, $secure );
	setcookie( 'wp-settings-time-' . $user_id, time(), time() + YEAR_IN_SECONDS, SITECOOKIEPATH, null, $secure );
	$_COOKIE['wp-settings-' . $user_id] = $settings;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_user_settings/