WordPress -Datenbank -Interaktionshandbuch: Master wpdb
Klasse und Datenbankbetriebsfähigkeiten
WordPress verfügt über eine große Anzahl von Datenbank -Interaktionsfunktionen. Insbesondere beim Umgang mit benutzerdefinierten Tabellen müssen wir manchmal Dinge tun, die nicht durch native WordPress -Merkmale erreicht werden können. WP_Query
wp_insert_post
update_post_meta
get_posts
die wichtigste Klasse untersucht und einige Entwicklungs -Tipps teilen. Wir werden die -Funktionen abdecken, die zum Erstellen benutzerdefinierter Tabellen verwendet werden, aber nicht die Grundlagen für das Erstellen einer anfänglichen WordPress -Datenbank abdecken.
wpdb
Schlüsselpunkte: dbDelta
WordPress bietet eine Vielzahl von Datenbank -Interaktionsfunktionen, einschließlich Klassen und verwandte Funktionen. Für komplexere Anforderungen können Entwickler jedoch
Klassen verwenden oder benutzerdefinierte Tabellen erstellen.WP_Query
Klasse ist ein Schlüsselwerkzeug zum direkten Umgang mit WordPress -Datenbanken. Um Hartcode-Tabellennamen in SQL-Abfragen zu vermeiden, verwenden Sie das von WordPress bereitgestellte wpdb
-Treizattribut, um die Code-Portabilität zu verbessern. wpdb
Klasse enthält auch Hilfsmethoden für Datenbankoperationen wie prefix
, wpdb
Methode. insert
update
Um die SQL -Injektion zu verhindern, bietet die get_row
-Klasse eine query
-Methode, die SQL -Anweisung und Daten empfängt, die entkommen müssen. Dies ist besonders wichtig, wenn Sie mit Methoden wie wpdb
prepare
Erstellen benutzerdefinierter Tabellen ist nützlich, wenn mehr detailliertere Steuerung erforderlich ist. Es wird empfohlen, die Funktion query
zu verwenden, um benutzerdefinierte Datenbanktabellen und Prozesstabellenschema -Updates zu erstellen. Speichern Sie die Datenbankversion in der Tabelle get_results
als Referenz in zukünftigen Updates. dbDelta
options
Verwenden Sie
Die wpdb
Klasse ist die am häufigsten verwendete Klasse, wenn Datenbanken direkt verarbeitet werden. Das WordPress -Handbuch hat die grundlegenden Methoden und Eigenschaften der -Klasse im Detail erläutert und wird hier nicht wiederholt. Wir werden uns auf einige der allgemeinen Fehler konzentrieren, die WordPress -Entwickler machen, wie sie korrigieren können, und Best Practices bei der Verwendung von
wpdb
wpdb
Hartcode-Tabellennamen in SQL-Abfragen wpdb
Einige Entwickler gehen davon aus, dass sich das Tabellenpräfix nicht ändert und den Standardwert
verwendet. Das folgende Code -Snippet zeigt den falschen Ansatz:
wp_
global $wpdb; $result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');
global $wpdb; $result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');
Besser noch, wenn Sie mit WordPress -Standardtabellen zu tun haben, können Sie sie direkt mit den Eigenschaften in wpdb
auf sie zugreifen. Jede WordPress -Standardtabelle wird durch eine gleichnamige Eigenschaft in der wpdb
-Klasse (mit Ausnahme von Präfixen) dargestellt. Angenommen, das Tabellenpräfix ist wp_
:
$wpdb->posts
entspricht wp_posts
Tabelle $wpdb->postmeta
entspricht wp_postmeta
Tabelle $wpdb->users
entspricht wp_users
Tabelle Daher kann der obige Code weiter verbessert werden:
global $wpdb; $result = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10');
Verwenden Sie spezifische Hilfsmethoden für Datenbankoperationen
Während die Methode query
jede SQL -Abfrage verarbeiten kann, verwenden Sie am besten geeignete Hilfsmethoden wie insert
, update
, get_row
usw. Diese Methoden sind spezifischer und sicherer, da es von ihnen bereits entkommen und andere zugrunde liegende Arbeiten behandelt werden.
Debuggen Sie die Datenbank Abfrage
richtig debuggen standardmäßig werden Fehlerberichte ausgeschaltet. wpdb
bietet zwei Möglichkeiten, um den Status von Fehlerberichten zu wechseln: $wpdb->show_errors();
(Ein) und $wpdb->hide_errors();
(aus). Wenn sowohl WP_DEBUG
als auch WP_DEBUG_DISPLAY
auf true
eingestellt sind, wird die show_errors
-Methode automatisch aufgerufen. In der $wpdb->print_error();
-Methode werden die Fehler der letzten Abfrage unabhängig vom Status des Fehlerberichts angezeigt. Aktivieren Sie wp-config.php
in SAVEQUERIES
, um alle Datenbankabfragen, Ausführungszeiten zu speichern und Standorte in das Attribut wpdb
der queries
-Klasse aufzurufen. Diese Daten können mit print_r( $wpdb->queries );
abgerufen werden. Beachten Sie, dass dies die Website der Website beeinflusst und daher nur bei Bedarf verwendet wird.
Schutzanfragen vor potenziellen Angriffen
schützen Um den Code vollständig vor SQL -Injektionsangriffen zu schützen, bietet wpdb
auch eine prepare
-Methode, die SQL -Anweisungszeichenfolgen und Daten empfängt, die entkommen müssen. Dies ist sehr wichtig, wenn Sie mit Methoden wie query
oder get_results
umgehen.
global $wpdb; $result = $wpdb->get_results('SELECT * FROM ' . $wpdb->posts . ' LIMIT 10');
prepare
unterstützt zwei Syntaxe: sprintf
und vsprintf
.
Verbinden Sie eine separate Datenbank
standardmäßig ist die Variable $wpdb
eine Instanz der wpdb
-Klasse, die mit der in wp-config.php
definierten WordPress -Datenbank verbunden ist. Wenn Sie mit einer anderen Datenbank interagieren möchten, können Sie eine andere Class -Instanz instanziieren. Der Konstruktor der wpdb
-Klasses akzeptiert vier Parameter: Benutzername, Kennwort, Datenbankname und Datenbankhost. wpdb
$wpdb->prepare( $sql, $format... );
-Methode in der Variablen $wpdb
. select
$mydb = new wpdb( 'username', 'password', 'my_database', 'localhost' );
Verwenden Sie benutzerdefinierte Datenbanktabellen
WordPress -Standardtabellen reichen normalerweise aus, um die meisten komplexen Vorgänge zu erledigen. Mit benutzerdefinierten Artikeltypen, Artikelmetadaten, benutzerdefinierter Taxonomie und Laufzeitmetadaten können Sie fast alles tun, ohne benutzerdefinierte Tabellen zu verwenden. Benutzerdefinierte Tabellen können jedoch nützlich sein, wenn die vom Plugin verarbeiteten Daten eine stärkere steuerere Steuerung. Die Vorteile von benutzerdefinierten Tabellen umfassen: vollständige Kontrolle über Datenstrukturen, Bedenken und Effizienz.
Verwenden Sie dbDelta
alle Aktualisierungen für Erstellung und Tabellenschema für die Erstellung von Tabellen zu verwenden. Der WordPress -Kern verwendet diese Funktion auch, um Datenbankschema -Updates zwischen den Versionen zu verarbeiten. dbDelta
global $wpdb; $result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');
plugin_loaded
WordPress ist nicht auf das Erstellen einfacher Websites beschränkt, sondern entwickelt sich schnell zu einem voll funktionsfähigen Anwendungs -Framework. Erweiterung WordPress sollte benutzerdefinierte Post -Typen und benutzerdefinierte Taxonomie priorisieren. Wenn jedoch mehr detaillierte Kontrolle von Daten benötigt wird, sind Funktionen und Klassen wie
sehr wichtig.
wpdb
Das obige ist der detaillierte Inhalt vonArbeiten mit Datenbanken in WordPress. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!