Best Practices für eine Style / CSS-basierte Seite mit Themenoptionen?


7

Ich möchte eine Seite mit Themenoptionen erstellen, die nur auf der Änderung des CSS-Stils für die gesamte Website basiert. Zum Beispiel Körper- / Container-Hintergrundfarben, Schriftgrößen, Schriftfarben usw.

Ich habe dies erreicht, indem ich einen Stylesheet-Link zu einer PHP-Datei im Header verwendet habe, die das CSS wiedergibt und get_option verwendet.

Zum Beispiel background-color: <?php echo get_option('background_color'); ?>;

Wäre es richtig anzunehmen, dass dies eine schlechte Idee ist, wenn es viele Optionen gibt?

Ich habe andere Methoden ausprobiert, aber alle scheinen Inline- oder eingebettete Stile hinzuzufügen, die ich nicht möchte. Wie würde man das umgehen?

Wäre es eine gute Idee, ein benutzerdefiniertes Skript zu erstellen, das in die statische CSS-Datei schreibt?

Gibt es eine Möglichkeit, wie die Einstellungs-API damit umgehen kann?

** PS. Tolle Antwort, aber ich habe mich entschieden, tatsächlich in eine statische Datei zu schreiben, da dies viel weniger Overhead bietet.


Warum nicht Inline-Stile verwenden? Es ist schneller als ein weiterer WordPress-Aufruf, nur um Ihr Stylesheet zu verarbeiten
onetrickpony

Ich möchte versuchen, Inline- oder eingebettete Stile als bewährte Methode zu vermeiden. Ich mag es nicht, darauf zu stoßen, und bevorzuge die Trennung von Inhalt und Design. Es fügt Wartungsprobleme, Zugänglichkeit und andere Probleme hinzu. Ich möchte also wissen, ob es andere Optionen gibt .
Wyck

Für alle, die nach so vielen Jahren hier landen: Verwenden Sie die Theme Customizer API ...
cjbj

Antworten:


4

Das Erstellen eines benutzerdefinierten Skripts, das in die statische CSS-Datei schreibt, ist eine schlechte Idee !!! Sie müssten die Datei jedes Mal neu generieren, wenn Sie Änderungen speichern.

Eine bessere Lösung wäre, alle Optionen in einer Reihe von Optionen zu speichern, z. B.:

$MyCSS['background_color'] = #009988;
$MyCSS['background_repeat'] = no-repeat;
update_option('theme_settings',$MyCSS);

und deshalb rufen Sie die Funktion "get_option ()" nur einmal auf.

    $MyCSS = get_option('theme_settings');
// and use :
    echo $MyCSS['background_color'];

und rufen Sie die Datenbank viel weniger auf und verbrauchen Sie weniger Ressourcen, wenn Sie leistungsmäßig denken.


Ihre Lösung ist die gleiche wie bei Wyck. Aber ich denke, die Verwendung einer statischen CSS-Datei ist besser. Da Sie diese Datei normalerweise nicht aktualisieren und die Aktualisierung nur einmal erfolgt, wenn Sie alle Optionen aktualisieren. In einer anderen Zeit muss Ihr PHP-Skript nichts tun (auch nicht die Werte wiedergeben), und die CSS-Datei wird statisch an den Benutzer gesendet, der zwischengespeichert werden kann.
Anh Tran

1
Meine Lösung ist etwas anders, da sie die Funktion get_option viel weniger aufruft und die Verwendung einer statischen CSS-Datei immer besser, aber weniger anpassbar ist.
Bainternet

Ja, ich habe auch einen Rückgang der Datenbankabfragen um 20 bis 30% festgestellt, als ich get_option nur einmal pro Option aufgerufen habe. Normalerweise erstelle ich eine get_option-Wrapper-Funktion, die abgerufene Optionen in einem globalen Array speichert, auf das zugegriffen werden kann, wenn dieselbe Option später angefordert wird. WP sollte dies eingebaut haben
onetrickpony
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.