函数文档

script_concat_settings()

💡 云策文档标注

概述

script_concat_settings() 函数用于确定 WordPress 中脚本和样式的合并与压缩设置。它通过全局变量和条件判断来配置 $concatenate_scripts、$compress_scripts 和 $compress_css 的值,以优化前端资源加载。

关键要点

  • 函数控制脚本和样式的合并(concatenation)与压缩(compression)行为,影响性能优化。
  • 使用全局变量 $concatenate_scripts、$compress_scripts 和 $compress_css 来存储设置,并基于常量(如 CONCATENATE_SCRIPTS、COMPRESS_SCRIPTS、COMPRESS_CSS)和条件(如 SCRIPT_DEBUG、wp_installing()、zlib.output_compression)进行动态调整。
  • 在非管理页面、登录初始化未触发或 SCRIPT_DEBUG 启用时,可能禁用合并;在无法压缩脚本或输出已压缩时,可能禁用压缩。

代码示例

function script_concat_settings() {
	global $concatenate_scripts, $compress_scripts, $compress_css;

	$compressed_output = ( ini_get( 'zlib.output_compression' ) || 'ob_gzhandler' === ini_get( 'output_handler' ) );

	$can_compress_scripts = ! wp_installing() && get_site_option( 'can_compress_scripts' );

	if ( ! isset( $concatenate_scripts ) ) {
		$concatenate_scripts = defined( 'CONCATENATE_SCRIPTS' ) ? CONCATENATE_SCRIPTS : true;
		if ( ( ! is_admin() && ! did_action( 'login_init' ) ) || ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ) {
			$concatenate_scripts = false;
		}
	}

	if ( ! isset( $compress_scripts ) ) {
		$compress_scripts = defined( 'COMPRESS_SCRIPTS' ) ? COMPRESS_SCRIPTS : true;
		if ( $compress_scripts && ( ! $can_compress_scripts || $compressed_output ) ) {
			$compress_scripts = false;
		}
	}

	if ( ! isset( $compress_css ) ) {
		$compress_css = defined( 'COMPRESS_CSS' ) ? COMPRESS_CSS : true;
		if ( $compress_css && ( ! $can_compress_scripts || $compressed_output ) ) {
			$compress_css = false;
		}
	}
}

注意事项

  • 函数依赖于多个 WordPress 核心函数和 Hook,如 wp_installing()、did_action()、is_admin() 和 get_site_option(),需确保这些函数在调用时可用。
  • 设置可能受服务器配置(如 zlib.output_compression)和站点选项(如 can_compress_scripts)影响,开发时应测试不同环境下的行为。
  • 此函数自 WordPress 2.8.0 引入,主要用于内部脚本加载器,如 wp_register_tinymce_scripts() 和 print_head_scripts(),不建议直接修改。

📄 原文内容

Determines the concatenation and compression settings for scripts and styles.

Source

function script_concat_settings() {
	global $concatenate_scripts, $compress_scripts, $compress_css;

	$compressed_output = ( ini_get( 'zlib.output_compression' ) || 'ob_gzhandler' === ini_get( 'output_handler' ) );

	$can_compress_scripts = ! wp_installing() && get_site_option( 'can_compress_scripts' );

	if ( ! isset( $concatenate_scripts ) ) {
		$concatenate_scripts = defined( 'CONCATENATE_SCRIPTS' ) ? CONCATENATE_SCRIPTS : true;
		if ( ( ! is_admin() && ! did_action( 'login_init' ) ) || ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ) {
			$concatenate_scripts = false;
		}
	}

	if ( ! isset( $compress_scripts ) ) {
		$compress_scripts = defined( 'COMPRESS_SCRIPTS' ) ? COMPRESS_SCRIPTS : true;
		if ( $compress_scripts && ( ! $can_compress_scripts || $compressed_output ) ) {
			$compress_scripts = false;
		}
	}

	if ( ! isset( $compress_css ) ) {
		$compress_css = defined( 'COMPRESS_CSS' ) ? COMPRESS_CSS : true;
		if ( $compress_css && ( ! $can_compress_scripts || $compressed_output ) ) {
			$compress_css = false;
		}
	}
}

Changelog

Version Description
2.8.0 Introduced.