函数文档

ms_cookie_constants()

💡 云策文档标注

概述

ms_cookie_constants() 函数用于定义 WordPress 多站点环境中的 Cookie 相关常量,确保 Cookie 路径和域设置正确,以支持多站点网络功能。

关键要点

  • 定义 COOKIEPATH 和 SITECOOKIEPATH 常量,均设置为当前网络的路径。
  • 根据子域名安装配置,动态定义 ADMIN_COOKIE_PATH 常量。
  • 在子域名安装时,定义 COOKIE_DOMAIN 常量,基于网络数据设置 Cookie 域。
  • 函数内部使用 get_network()、is_subdomain_install() 和 get_option() 等辅助函数。

代码示例

if ( ! defined( 'COOKIEPATH' ) ) {
    define( 'COOKIEPATH', $current_network->path );
}
if ( ! defined( 'SITECOOKIEPATH' ) ) {
    define( 'SITECOOKIEPATH', $current_network->path );
}
if ( ! defined( 'ADMIN_COOKIE_PATH' ) ) {
    $site_path = parse_url( get_option( 'siteurl' ), PHP_URL_PATH );
    if ( ! is_subdomain_install() || is_string( $site_path ) && trim( $site_path, '/' ) ) {
        define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH );
    } else {
        define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
    }
}
if ( ! defined( 'COOKIE_DOMAIN' ) && is_subdomain_install() ) {
    if ( ! empty( $current_network->cookie_domain ) ) {
        define( 'COOKIE_DOMAIN', '.' . $current_network->cookie_domain );
    } else {
        define( 'COOKIE_DOMAIN', '.' . $current_network->domain );
    }
}

注意事项

  • 函数仅在常量未定义时才进行定义,避免重复定义错误。
  • ADMIN_COOKIE_PATH 的定义依赖于站点 URL 路径和子域名安装状态。
  • COOKIE_DOMAIN 仅在子域名安装时定义,并优先使用网络的自定义 Cookie 域。

📄 原文内容

Defines Multisite cookie constants.

Source

function ms_cookie_constants() {
	$current_network = get_network();

	/**
	 * @since 1.2.0
	 */
	if ( ! defined( 'COOKIEPATH' ) ) {
		define( 'COOKIEPATH', $current_network->path );
	}

	/**
	 * @since 1.5.0
	 */
	if ( ! defined( 'SITECOOKIEPATH' ) ) {
		define( 'SITECOOKIEPATH', $current_network->path );
	}

	/**
	 * @since 2.6.0
	 */
	if ( ! defined( 'ADMIN_COOKIE_PATH' ) ) {
		$site_path = parse_url( get_option( 'siteurl' ), PHP_URL_PATH );
		if ( ! is_subdomain_install() || is_string( $site_path ) && trim( $site_path, '/' ) ) {
			define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH );
		} else {
			define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
		}
	}

	/**
	 * @since 2.0.0
	 */
	if ( ! defined( 'COOKIE_DOMAIN' ) && is_subdomain_install() ) {
		if ( ! empty( $current_network->cookie_domain ) ) {
			define( 'COOKIE_DOMAIN', '.' . $current_network->cookie_domain );
		} else {
			define( 'COOKIE_DOMAIN', '.' . $current_network->domain );
		}
	}
}

Changelog

Version Description
3.0.0 Introduced.