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. |