Ich kenne mich mit WordPress aus, aber im Moment entwickle ich ein ziemlich großes und fortschrittliches WordPress-Plugin.
Aus diesem Grund habe ich mir viele Gedanken über meine Datenstruktur gemacht.
Als ich ein Anfänger war, habe ich es immer so gespeichert (get_option(prefix_option_name)). Dann fing ich an, multidimensionale Arrays zu verwenden, registrierte 1 für jeden settings_section und jetzt speichere ich normalerweise alle Plugin-Optionen in einem großen multidimensionalen Array wie diesem: plugin_options[section][option][evt.more subs here][etc]
Das funktioniert gut, und ich mag die Tatsache, dass ich alle Optionen einmal im Init-Hook ($plugin_options = get_option(‘plugin_options)) herausziehen kann, damit ich mit den $options “lokal” im Plugin arbeiten kann , JEDOCH…
In Anbetracht der Tatsache, dass WordPress bereits Transienten verwendet, um den get_option-Aufruf zwischenzuspeichern (WP Cache API), was ist besser für die leistung? Obwohl mein Plugin viele Optionen hat, könnten Sie wohl nie die Grenze des Longtext-Typs (4 GB Daten oder so) erreichen, selbst wenn ich alles in ein einziges serialisierbares multidimensionales Array gepackt habe? Aber ich möchte das tun, was aus Performance-Sicht am besten ist, also kurz gesagt, hier nochmal meine Frage:
Was ist das Beste (für ein ziemlich großes und komplexes WordPress-Plugin)?
- Speichern Sie alle Ihre Plugin-Optionen als eine einzige Option (serialisiertes multidimensionales Array), wie zB. name=”plugin_options[section][option]”
- Aufteilen jedes Optionsreiters und jeder Optionsseite in einen eigenen Optionseintrag wie zB: Abschnitt[option][etc]
- Stellen Sie einfach alle Ihre Plugin-Optionen voran und setzen Sie sie dann als separaten DB-Eintrag wie zB. Pluginname_Option_1, Pluginname_Option_2
Ich mag den Ansatz der “einzelnen Plugin-Option”, aber im Moment bin ich verwirrt, ob das Abrufen / Aktualisieren eines großen Arrays aus der Datenbank wirklich der beste Weg ist, wenn das Array WIRKLICH groß wird – wie in einem sehr großes und fortschrittliches Plugin.
Das Problem mit 3, wie ich es sehe, ist, dass Sie mit 1 nur alle Optionen in einem db-Aufruf abrufen müssten, während Sie in 3 (wo Sie jede Option als einen db-Eintrag für sich selbst speichern) die abfragen müssten db für jede spezifische und individuelle Option.
Aber was ist besser 1 Anruf für alle Optionen, 1 für jeden Abschnitt oder 1 für jede einzelne Option (ich denke, meine Frage könnte am Ende darauf eingegrenzt werden :D). Kann die serialisierbare “Einzeloption”-Plug-in-Option multidimensionales Array realistischerweise zu groß werden? Soll es aufgeteilt werden?
Freuen Sie sich darauf, Ihre Meinung dazu zu hören. Prost. 🙂