問題描述

我正在創建一個主題,用户可以通過設置 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。