it-swarm.com.de

Was ist der richtige Weg, um eine benutzerdefinierte Tabelle zu verwenden?

Ich habe meiner WordPress-Datenbank manuell eine Tabelle hinzugefügt, indem ich SQL mit CREATE TABLE verwendet habe. Ich möchte Funktionen zum Hinzufügen, Ändern und Entfernen von Daten aus dieser Tabelle hinzufügen, genau wie bei wp_update_user().

Soll ich eine Schnittstelle für meine neue Tabelle erstellen? Wie gehe ich vor?

Mehr zum Problem:

Ich möchte, dass Benutzer der Website Gruppen/Teams beitreten können. Ich habe eine Teamtabelle (mit Team-ID, Team-Typ und Team-Name) und eine Join-Tabelle (mit Benutzer-/Team-ID) in meiner Datenbank eingerichtet. Ich möchte in der Lage sein, Funktionen, die sich auf diese Tabellen beziehen, aus meiner page_template.php-Datei aufzurufen.

Zum Beispiel möchte ich eine Funktion aufrufen, die ein neues Team basierend auf der Formulareingabe eines Benutzers in die Datenbank einfügt.

1
ellen

Soll ich eine Schnittstelle für meine neue Tabelle erstellen? Wie gehe ich vor?

Leider gibt es keine zu implementierende Schnittstelle, Sie müssen alles von Grund auf neu erstellen . Das beinhaltet:

  • Die Admin-Seiten
  • Die Bearbeitungsbildschirme
  • Das Speichern und Aktualisieren und Löschen
  • Alle Klassen und Funktionen müssen von Grund auf neu erstellt werden
  • Das ganze Caching
  • REST-API-Endpunkte
  • Frontend-Archive, Vorlagen, hübsche URLs/Rewrite-Regeln
  • Seitennummerierung
  • Die ganze SQL

Das einzige, was WP für Sie hilfreich ist, ist die Variable $wpdb, mit der Sie SQL-Abfragen durchführen können.

Ich möchte Funktionen zum Hinzufügen, Ändern und Entfernen von Daten aus dieser Tabelle hinzufügen, genau wie mit wp_update_user ().

Sie müssen alle diese von Grund auf neu erstellen, wenn Sie sie möchten. WordPress bietet hier keine Hilfe

Zum Beispiel möchte ich eine Funktion aufrufen, die ein neues Team basierend auf der Formulareingabe eines Benutzers in die Datenbank einfügt.

Sie müssen die Funktion von Grund auf neu erstellen. Es gibt keinen empfohlenen Pfad für das, was Sie tun. Es handelt sich um eine generische PHP - Entwicklung, die sich zufällig auf einer WP - Site befindet. Keine der WP-APIs ist hilfreich

Ich habe meiner WordPress-Datenbank manuell eine Tabelle hinzugefügt, indem ich SQL mit CREATE TABLE verwendet habe.

Die Funktion dbdelta kann auch verwendet werden, um die Tabelle zu erstellen und ihr Schema zu aktualisieren. Es handelt sich jedoch um eine sehr knifflige und unnachgiebige Funktion, die CREATE TABLE-Anweisungen mit äußerst spezifischen Anforderungen an die Formatierung und Null-Wackel-Raum erwartet. Wenn Sie beispielsweise nach dem Schlüsselwort PRIMARY keine zwei Leerzeichen einfügen, funktioniert dies nicht und es gibt viele andere Einschränkungen.

Was ist der richtige Weg, um eine benutzerdefinierte Tabelle zu verwenden?

Es gibt keinen. Der Grund, warum Sie nicht gefunden haben, wonach Sie suchen, ist, dass es nicht existiert. WordPress bietet wenig oder gar nichts in Bezug auf Support, Anleitung, Infrastruktur, Schnittstellen oder Hilfe für die Verwendung benutzerdefinierter Tabellen.

Nach gängigen Best Practices werden benutzerdefinierte Tabellen selten benötigt, und die Verwendung einer benutzerdefinierten Tabelle ist in den meisten Fällen ein Zeichen dafür, dass ein Fehler aufgetreten ist. In den meisten Fällen werden benutzerdefinierte Tabellen für die Interaktion mit Tabellen verwendet, die bereits an anderer Stelle vorhanden sind.

Gibt es Möglichkeiten, sich das Leben zu erleichtern? Ja! Aber diese sind nicht WP spezifisch, sie sind offensichtliche Dinge wie Abstraktionen und Wrapper-Funktionen, die für jedes PHP Programm gelten würden.

Zum Beispiel habe ich einmal die Doctrine ORM-Bibliothek verwendet, um eine Reihe von benutzerdefinierten Tabellen zu implementieren. Das Plugin enthielt sehr wenig WP Code und könnte genauso gut eine eigenständige PHP Anwendung gewesen sein. Im Nachhinein hätte ich es genauso gut mit benutzerdefinierten Beitragstypen und einer nicht öffentlichen Taxonomie machen können.

Was Sie suchen sollten, ist allgemeines PHP benutzerdefiniertes Tabellenmaterial, nicht WP spezifisch. Außerhalb von wpdb stöbern Sie in einer Sackgasse


Haben Sie nebenbei erwogen, nur eine benutzerdefinierte Benutzertaxonomie zu verwenden ? Taxonomien sind nicht nur für Posts, Taxonomien sind für IDs! Solange diese ID numerisch ist und sich immer auf den gleichen Typ bezieht, kann es sich um Posts, Kommentare, Benutzer, Hausnummern usw. handeln. Mischen Sie sie einfach nicht.

6
Tom J Nowell