在主题开发中,经常需要根据用户的设置或页面条件动态生成 CSS。例如,用户在自定义器中选择了主色,整个网站的链接颜色、按钮颜色都需要同步变化。动态 CSS 生成技术让这些需求成为可能。

内联样式输出方法

最简单的方式是在 wp_head 钩子中直接输出 <style> 标签。这种方式适合输出少量的动态样式,比如一个颜色值。使用 wp_add_inline_style 函数将动态 CSS 附加到已加载的样式表之后,可以利用已有样式表的缓存机制。

动态 CSS 文件生成

如果动态样式较多,可以创建一个单独的 PHP 文件来生成 CSS。这个文件需要设置正确的 Content-Type 头,然后输出 CSS 代码。在主题中,使用 wp_enqueue_style 加载这个 PHP 文件,WordPress 会将其识别为样式表。

自定义器中的实时预览

在主题自定义器中,要实现颜色的实时预览,需要在 JavaScript 中监听设置变化,然后动态更新页面样式。customize_preview_init 钩子中加载 JavaScript 文件,使用 wp.customize API 获取和监听设置值。

动态样式的性能考虑

动态生成的 CSS 如果每次都重新计算,会增加服务器负载。建议对动态 CSS 进行缓存,只在设置更新时重新生成。可以使用瞬态 API 存储生成的 CSS 内容,设置合理的过期时间。

使用 CSS 变量

CSS 变量是处理动态样式的现代方式。在动态 CSS 中定义 CSS 变量,然后在主题样式表中使用这些变量。这样只需要更新变量值,而不需要重写所有样式规则。