问题描述

我正在创建一个主题,用户可以通过设置 API 从主题定制程序中保存自定义样式。这些样式信息作为序列化数据保存在选项表中。

当自定义皮肤处于活动状态时,我将不得不在站点中打印这些 CSS 样式。有三条路线我可能会去。

  1. 使用<style> 标签在标题区域打印自定义样式。

  2. 创建一个 custom.css.php 文件,我打印这些样式。

  3. 使用 php 文件操作创建一个 css 文件,并在用户保存自定义样式时保存这些样式。

所有这些都有利弊

  1. 使用<style><head> 中打印:该主题将被互联网营销人员使用,他们关心代码到文本比例。添加 20-30 行的 css 代码将增加代码比率。

  2. 使用 PHP header()创建 CSS 文件:Wordpress 功能不可用。将需要加载它们是低效的。也是 IE have some issues with this method

  3. 每当用户保存自定义样式时,编写一个 CSS 文件:这似乎是一个好主意。但是我对这种方法的利弊知之甚少。并且如果用户在各种服务器中安装主题可能会面临任何权限问题。如果你能启发我这个话题,我会感激的。

那么在这种情况下,正确的方法是什么呢?

最佳解决方案

当您的用户真正需要 30 行自定义 CSS 时,您的主题是有缺陷的。创建一组预定义的样式 (黑暗和轻的方案,无衬线字体等),并为这些情况准备主要样式表。您可以挂接到 body_class 然后添加您需要获得这些样式的类。您的用户调整应该非常小。

使用 endpoint for a PHP generated stylesheet 就像你的第二个选择。这不是 IE 中的问题,缓存插件将有助于进一步减少处理时间。我将使用端点的最后一个更改的时间戳,例如:

example.com/css/012345678/

… 以确保浏览器获取最新鲜的样式表,并缓存文件。

选项 3 意味着:您必须按照 Filesystem API 保存文件,您必须确保以后不会被删除 (棘手!),并且您应该替换旧文件以避免疯狂数量的 CSS 文件。强制新文件替换缓存的文件而不附加 GET 参数也不容易。

使用端点。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。