wp_cookie_constants()
云策文档标注
概述
wp_cookie_constants() 函数用于定义 WordPress 中与 Cookie 相关的常量,确保在多站点加载后设置这些常量,以支持身份验证、会话管理等核心功能。
关键要点
- 定义多个 Cookie 相关常量,如 COOKIEHASH、USER_COOKIE、AUTH_COOKIE 等,基于站点 URL 生成唯一哈希值。
- 常量定义包括 Cookie 名称、路径和域,例如 COOKIEPATH、SITECOOKIEPATH、COOKIE_DOMAIN,用于控制 Cookie 的存储和访问范围。
- 函数在 WordPress 初始化过程中调用,确保常量在需要时已定义,避免重复定义错误。
- 支持从 WordPress 1.2.0 到 6.6.0 的多个版本,部分常量值随版本更新而变化,如 COOKIE_DOMAIN 在 6.6.0 中从 false 改为空字符串。
代码示例
function wp_cookie_constants() {
if ( ! defined( 'COOKIEHASH' ) ) {
$siteurl = get_site_option( 'siteurl' );
if ( $siteurl ) {
define( 'COOKIEHASH', md5( $siteurl ) );
} else {
define( 'COOKIEHASH', '' );
}
}
if ( ! defined( 'USER_COOKIE' ) ) {
define( 'USER_COOKIE', 'wordpressuser_' . COOKIEHASH );
}
// 更多常量定义...
}注意事项
- 常量仅在未定义时进行定义,使用 if ( ! defined( 'CONSTANT_NAME' ) ) 检查,防止覆盖现有值。
- COOKIEHASH 基于站点 URL 的 MD5 哈希生成,确保不同站点的 Cookie 唯一性,但若站点 URL 未设置,则定义为空字符串。
- 部分常量如 COOKIE_DOMAIN 在 WordPress 6.6.0 中值有变化,开发时需注意版本兼容性。
原文内容
Defines cookie-related WordPress constants.
Description
Defines constants after multisite is loaded.
Source
function wp_cookie_constants() {
/**
* Used to guarantee unique hash cookies.
*
* @since 1.5.0
*/
if ( ! defined( 'COOKIEHASH' ) ) {
$siteurl = get_site_option( 'siteurl' );
if ( $siteurl ) {
define( 'COOKIEHASH', md5( $siteurl ) );
} else {
define( 'COOKIEHASH', '' );
}
}
/**
* @since 2.0.0
*/
if ( ! defined( 'USER_COOKIE' ) ) {
define( 'USER_COOKIE', 'wordpressuser_' . COOKIEHASH );
}
/**
* @since 2.0.0
*/
if ( ! defined( 'PASS_COOKIE' ) ) {
define( 'PASS_COOKIE', 'wordpresspass_' . COOKIEHASH );
}
/**
* @since 2.5.0
*/
if ( ! defined( 'AUTH_COOKIE' ) ) {
define( 'AUTH_COOKIE', 'wordpress_' . COOKIEHASH );
}
/**
* @since 2.6.0
*/
if ( ! defined( 'SECURE_AUTH_COOKIE' ) ) {
define( 'SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH );
}
/**
* @since 2.6.0
*/
if ( ! defined( 'LOGGED_IN_COOKIE' ) ) {
define( 'LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH );
}
/**
* @since 2.3.0
*/
if ( ! defined( 'TEST_COOKIE' ) ) {
define( 'TEST_COOKIE', 'wordpress_test_cookie' );
}
/**
* @since 1.2.0
*/
if ( ! defined( 'COOKIEPATH' ) ) {
define( 'COOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'home' ) . '/' ) );
}
/**
* @since 1.5.0
*/
if ( ! defined( 'SITECOOKIEPATH' ) ) {
define( 'SITECOOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'siteurl' ) . '/' ) );
}
/**
* @since 2.6.0
*/
if ( ! defined( 'ADMIN_COOKIE_PATH' ) ) {
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
}
/**
* @since 2.6.0
*/
if ( ! defined( 'PLUGINS_COOKIE_PATH' ) ) {
define( 'PLUGINS_COOKIE_PATH', preg_replace( '|https?://[^/]+|i', '', WP_PLUGIN_URL ) );
}
/**
* @since 2.0.0
* @since 6.6.0 The value has changed from false to an empty string.
*/
if ( ! defined( 'COOKIE_DOMAIN' ) ) {
define( 'COOKIE_DOMAIN', '' );
}
if ( ! defined( 'RECOVERY_MODE_COOKIE' ) ) {
/**
* @since 5.2.0
*/
define( 'RECOVERY_MODE_COOKIE', 'wordpress_rec_' . COOKIEHASH );
}
}
Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |