it-swarm.com.de

Modulare Designeinstellungen

Ich suche Rat, wie Sie eine Reihe von Einstellungen für ein modulares Thema am besten speichern können.

Notieren:

  • Die Einstellungen sind nicht benutzerbezogen (nicht für die Customizer-API geeignet).
  • Im Idealfall werden die Optionen nicht in der Datenbank gespeichert, da sie statisch sind (aus Gründen der Leistung).
  • Das Thema ist nicht öffentlich, es wird als Framework für mehrere Websites verwendet.

Ich habe add_option/get_option verworfen, der die Datenbank verwendet, und ebenso für get_theme_mod/set_theme_mod.

Ich verwende derzeit ein Array mit globalem Gültigkeitsbereich - was nicht ideal ist (nach dem, was ich gelesen habe).

Irgendwelche anderen Gedanken/Vorschläge?

5
addedlovely

Wenn ein Benutzer sie nicht ändern kann, handelt es sich nicht um Optionen, sondern um Konstanten. Deklarieren Sie sie mit const in Ihrer Hauptthemadatei (wahrscheinlich functions.php, aber alle anderen Dateien, die immer geladen werden, tun dies) und verwenden Sie sie, wo immer Sie das Array "options" jetzt verwenden.

Wenn Sie es steuern möchten, ohne Ihre Designdateien zu bearbeiten, können Sie stattdessen eine bedingte define verwenden (prüfen Sie, ob der Wert noch nicht definiert ist und ob er nicht definiert ist). Auf diese Weise können Sie die Standardwerte überschreiben, indem Sie sie in der wp-config.php-Datei pro Site definieren.

... Aber das klingt alles falsch. Die DB ist da, verwenden Sie sie also einfach, und eine grundlegende Benutzeroberfläche zur Steuerung der Optionen ist leicht zu finden. Es gibt keinen wirklichen Grund, bei jedem Aktivieren/Deaktivieren eines Moduls auf Codeänderungen zurückzugreifen.

3
Mark Kaplun

Erste Wahl

Ich würde die Datenbankoptionen nicht von Anfang an ignorieren, es wäre meine erste Wahl, da theme_mods themenabhängig ist.

Als Leistung werden die wp-Optionen automatisch geladen und sie nutzen das beständige Cache-System, das WordPress im Kern hat (Sie können es in Aktion auf wp_cache_get sehen). Sie sind so gut wie ein globales Objekt.

Zweite Wahl

Es könnte ein Grund sein, diese Einstellungen nicht als Optionen zu speichern, wenn sie fast statisch sind (wenn sie sich selten ändern würden) und sie sollten nur definieren, welche Module/Teile des Themas geladen werden sollen oder nicht.

In diesem Fall würde ich mich für eine config.json-Datei entscheiden, die mit file_get_content geladen werden sollte. Auf diese Weise können Sie eine Standardkonfiguration im Framework definieren (etwa config.example.json) und diese durch Kopieren und Einfügen auf Ihren Websites einfügen.

2
Andrei