Eine Möglichkeit, wp_options zu partitionieren?

Ich möchte einige functionen in meiner functions.php-Datei verwenden update_option () verwenden, um einige lokale Daten zu speichern, aber die wp_options-Tabelle scheint für jede Software auf meiner Site global zu sein, daher muss ich meinen Daten einen langen Namen geben um sicherzustellen, dass es nicht mit einem Namen kollidiert, den jemand anderes für seine Daten ausgewählt hat. Gibt es einen Weg dahin?

Vielen Dank

Solutions Collecting From Web of "Eine Möglichkeit, wp_options zu partitionieren?"

Nein, und ich rate dringend davon ab, das Tabellenschema der WordPress-Optionen zu ändern. Es treten folgende Probleme auf:

  • Kein zuverlässiger Update-process mehr
  • Nicht portabler Code
  • Sie werden nicht in der Lage sein, die get_options functionssuite und die Objekt-Caching- und -Optimierungsfunktionen, die mit ihnen get_options werden, zu verwenden

Wenn du es get_options hast, mit get_options arbeiten, get_options du wieder da, wo du angefangen hast

Mein Vorschlag? $prefix.'_option_name'

Gibt es einen Weg dahin?

Kurze Antwort: Ja, technisch möglich, aber nicht empfehlenswert . Lesen Sie unten für die lange Antwort:

Benutzerdefinierte databasetabelle verwenden:

Sie können natürlich benutzerdefinierte databasetabelle implementieren , um mit Ihren Daten umzugehen. Für einfache Vorgänge wird dieser process jedoch nicht empfohlen . Einige Gründe sind:

  • Es wird schwierig zu pflegen. Zum Beispiel, wenn zehn weitere Plugins, die Sie verwenden, eine eigene table ? Ihre database wird mit tables gefüllt, die höchstwahrscheinlich nicht gut definiert sind.

  • Sie müssen zukünftige Updates von WordPress & Database genau überwachen und persönlich sicherstellen, dass Ihre benutzerdefinierten databasefunktionen kompatibel bleiben.

  • Die Optionen-API wurde durch jahrelange Erfahrung und Updates optimiert. Das gleiche Optimierungsniveau mit Ihrer benutzerdefinierten database wird nicht einfach sein.

Daher ist die Verwendung der Core- Options API die beste Option (es sei denn, Ihre Daten beziehen sich auf Posts oder Benutzer . In diesen Fällen sollten Sie Post-Meta- bzw. Benutzer-Meta verwenden).

Um den Konflikt zwischen Optionsnamen zu vermeiden, wenn die Daten standortspezifisch sind:

  • Verwenden Sie den Domänennamen der Website als Optionsnamenpräfix. Wenn Ihre Site example.com , verwenden Sie example_com_option_name (ersetzen Sie option_name mit dem entsprechenden Namen) für den Optionsnamen. Niemand sonst wird Ihren Domain-Namen als Präfix verwenden.

  • In diesem Fall ist es besser, wenn Sie die Datenfunktionen nicht in die functions.php des Themes schreiben. Erstellen Sie stattdessen ein benutzerdefiniertes Plug-in, um diese standortspezifischen Daten mit der Options API . Auf diese Weise bleiben die Site-spezifischen Optionen erhalten, auch wenn Sie das Thema wechseln. Überprüfen Sie in diesem Artikel, warum Sie functions.php für diese Arten von Fällen nicht verwenden sollten .

Um den Optionsnamenkonflikt zu vermeiden, wenn die Daten themenspezifisch sind:

Was ist, wenn die fraglichen Daten für das Thema spezifisch sind? Wenn Sie dieses Thema auf anderen Websites verwenden, haben diese Websites ähnliche Daten. Oder, wenn Sie das Thema ändern, benötigen Sie die Daten oder nicht? In solchen Fällen:

  • Verwenden Sie den Namen des Designs als Präfix des Optionsnamens. Wenn der Name Ihres steve_option_name beispielsweise ” steve_option_name lautet, können Sie ” steve_option_name . Wenn Sie der Meinung sind, dass der Themenname möglicherweise nicht eindeutig ist, kombinieren Sie den Namen Ihrer primären Domain mit dem Optionsnamen: example_com_steve_option_name .

  • In diesem Fall implementieren Sie die Options API functionen in der Datei functions.php Ihres Themes.

Konflikt zwischen Optionsnamen vermeiden, wenn die Daten weder themenspezifisch noch standortspezifisch sind:

Was ist, wenn Sie mehrere Websites haben und unterschiedliche Designs verwenden und alle diese Sites dieselben Optionsdaten benötigen?

  • In diesem Fall implementieren Sie die Options API functionen in einem benutzerdefinierten Plugin und verwenden Sie den Namen des Plugins als Präfix für den Optionsnamen. Kombinieren Sie wie oben Ihren primären Domainnamen mit dem Namen des Plugins, um alle möglichen Namenskonflikte zu vermeiden.

[Bonus] Vermeiden Sie das Hinzufügen mehrerer Optionen:

In den meisten Fällen müssen Sie nicht mehrere Optionen erstellen. Sofern die meisten Optionen nicht ausschließlich in verschiedenen Bereichen Ihrer Site verwendet werden, ist es im Allgemeinen besser, nur eine Option zu erstellen und alle Ihre standortspezifischen benutzerdefinierten Optionen in einem Array abzulegen. Dieses Dokument beschreibt, wie Sie das tun können. Wie im WP-Dokument angegeben:

Der Zugriff auf Daten als einzelne Optionen kann zu vielen einzelnen databasetransaktionen führen, und in der Regel sind databasetransaktionen kostspielige Vorgänge (in Bezug auf Zeit und Serverressourcen). Wenn Sie ein Array von Optionen speichern oder abrufen, geschieht dies in einer einzigen Transaktion, was ideal ist.

Wenn also nur eine Option für Ihren Anwendungsfall geeignet ist, warum sollten Sie dann eine benutzerdefinierte databasetabelle erstellen? Mit nur einem Optionsnamen wird die geringe Konfliktwahrscheinlichkeit (nachdem die obigen Empfehlungen befolgt wurden) noch niedriger und selbst wenn ein Konflikt auftritt, ist die Lösung sehr einfach, da Sie nur eine Option in der database ändern müssen.

Sie könnten eine neue Tabelle nur für Ihre Optionen erstellen.

Auf meinen Plugins, die Optionen speichern, stelle ich nur sicher, dass die Option ‘name’ kein allgemeines Wort ist, indem ich die Option mit den Initialen meines Pluginnamens benenne. Wenn mein Plugin also “My Really Neat Plugin” heißt, wäre der Name der Option “mrnp_options”.

Wenn Sie befürchten, mit einer anderen ähnlichen Option zu kollidieren, könnte Ihr Plugin-Aktivierungscode mehrere alternative Optionsnamen haben. Aber dann müssten Sie diesen Optionsnamen irgendwo speichern. Also, keine gute Wahl, würde ich denken.

Ich habe auch die “Initialen” des Plugins in alle functionen des Plugins eingefügt, damit meine functionen nicht mit denen anderer kollidieren.

Ich stimme Tom J. Newell und Rick Hellewell voll und ganz zu, da dies die beste Vorgehensweise für WordPress ist.

Diese Seite im WordPress-Codex hilft beim Erstellen von databasetabellen, wenn dies Neuland für Sie ist.