WordPress-Datenbank $wpdb versus get_option()

Lesezeit: 4 Minuten

Benutzer-Avatar
Sakamoto Kazuma

Also habe ich Plugins entwickelt, die mithilfe der get_option-Funktionen in einer Datenbank interagieren und löschen.

Ich habe jetzt einige Tutorials gesehen, die zeigen, wie man die globale $wpdb-Methode verwendet, um Werte aus der Datenbank zu erhalten.

Was ist der Unterschied zwischen den beiden und ist einer besser als der andere?

Zum Speichern von Plugin-Optionen oder leichtgewichtigen Daten in Bezug auf Posts sind get_option(), get_post_meta() und ihre zugehörigen Funktionen ideal. Für relationale Datenbankaktivitäten ist $wpdb die beste Wahl. Hier ist der Grund:

$wpdb ist eine auf der ezSQL-PHP-Klasse basierende Klasse für die Interaktion mit der Datenbank. Einige Funktionen umfassen:

1) bietet SQL-Injection-Schutz mit den Methoden $wpdb->prepare(), $wpdb->insert() und $wpdb->update(). get_option() ist eine Hilfsfunktion, mit der Sie ein Key => Value-Paar ausführen können.

2) $wpdb ist einfach zu bedienen. Es kann Datensätze in verschiedenen Formen zurückgeben: $wpdb->get_results($sql, ARRAY_A) ein Array oder assoziative Arrays, die die zurückgegebenen Zeilen enthalten, wobei die Spaltennamen die Schlüssel sind. $wpdb->get_results($sql) würde ein Array von Objekten mit dem Spaltennamen als Eigenschaften des Objekts zurückgeben. $wpdb->get_var($sql) würde ein skalares Ergebnis zurückgeben (die erste Spalte der ersten Zeile des Datensatzes aus der Abfrage). $wpdb->get_row($sql) würde eine einzelne Zeile als Objekt zurückgeben.

3) Mit $wpdb können Sie mit jeder Tabelle in der Datenbank interagieren und sogar Freiformabfragen mit $wpdb->query($sql) durchführen.

4) WordPress stellt wahrscheinlich sicher, dass sich Ihre Interaktionen mit $wpdb nicht ändern müssen, wenn sie Unterstützung für andere Datenbanken als MySQL hinzufügen. Die ursprüngliche ezSQL-Klasse sollte eine gewisse datenbankübergreifende Unterstützung bieten.

Wenn Sie also relational mit Daten umgehen müssen, ist $wpdb wirklich eine ausgezeichnete Wahl für WordPress.

get_option() und get_post_meta() bieten eine einfache Möglichkeit, mit kleinen Datenmengen umzugehen, entweder bezogen auf einen bestimmten Beitrag im Fall von get_post_meta() oder als Schlüssel => Wert-Paar mit get_option().

Eines der netten Dinge dabei ist, dass Sie ein serialisiertes Array oder Objekt speichern und diese Daten entweder als Array oder als Objekt zurückerhalten können. Dies gibt Ihnen eine sehr einfache Möglichkeit, mit Datenfeldern umzugehen, als ob Sie eine Datenbanktabelle hätten. Dies funktioniert jedoch nicht gut, wenn Sie Daten zwischen Tabellen in Beziehung setzen oder Summierungen, Zählungen oder andere Datenbankberechnungen mit den serialisierten Daten durchführen müssen. In diesen Fällen wäre eine vollwertige Tabelle und $wpdb besser geeignet.

Die Verwendung von WordPress-Hilfsfunktionen (nicht beschränkt auf get_option()) stellt sicher, dass Ihr Plug-In aufwärtskompatibel ist, wenn eine neuere Version von WordPress Änderungen vornimmt, die sich möglicherweise auf Ihren Code auswirken.

Es wird empfohlen, dass Sie ihre Helfer verstehen und verwenden, bevor Sie in Erwägung ziehen, Ihre eigenen zu programmieren.

  • Ja, es wird empfohlen, get_option() in Schleifen zu verwenden, sodass Sie anstelle eines Aufrufs an die Datenbank etwa 20 Aufrufe erhalten.

    – Tosch

    4. Dezember 2012 um 20:46 Uhr

Benutzer-Avatar
Corey Ballou

Die globale $wpdb-Variable ist leistungsfähiger als die Funktion get_option(), da sie es Ihnen ermöglicht, Daten aus jeder Tabelle in WordPress zu manipulieren und abzurufen, einschließlich aller Plugin-Tabellen. Dies gibt Ihnen mehr Möglichkeiten, als nur Zugriff auf die Optionstabelle zu erhalten.

Du solltest benutzen get_option() wenn Sie speziell eine Option aus der Optionstabelle abrufen, die für Plugin-Optionen verwendet wird. Andere Variationen dieser Funktion sind add_option, update_optionund delete_option. Alle damit verbundenen Funktionen sollten speziell für Plugin-Optionen verwendet werden.

Ich habe beides schon mal benutzt. Wenn Sie die Hilfsfunktionen verwenden können, sollten Sie dies tun. Wenn Sie etwas sehr Benutzerdefiniertes tun müssen, können Sie die Datei global verwenden. Ich verwende die globale nur, wenn ich nur meine eigene Abfrage schreiben muss

Ich verwende beides in meiner Entwicklung.

  • get_option() ist viel einfacher für statische oder einzelne Info-Bits
  • $wpdb eignet sich besser zum Speichern mehrdimensionaler Informationen

Der Hauptunterschied besteht darin, dass Informationen zum Mitnehmen (wie Lizenzschlüssel, Ablaufdaten und statische Informationen) get_option() ist wirklich praktisch. Es ist schlank, schnell und wirklich einfach zu bedienen.

Aber ich entwickle Plugins, die Benutzerdaten und Formularübermittlungen verwalten, und in Fällen wie diesem get_option() bietet nicht die Vielseitigkeit, die ich brauche, ohne viele zusammengesetzte Arrays zu schreiben oder zu versuchen, mehrere Optionen zu verfolgen. Für mehrdimensionale Informationen oder für den Querverweis verwandter Dateneinträge für ein Plugin, $wpdb ist viel besser – Sie können Ihre eigenen Tabellen strukturieren und sortieren/organisieren, wie Sie möchten.

🙂

1371840cookie-checkWordPress-Datenbank $wpdb versus get_option()

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy