Ich bin selten anderer Meinung als sonst sachkundige Benutzer, aber in diesem Fall kann ich nichts dagegen tun. Meiner Meinung nach ist es einfach falsch, die Verwendung von Nicht-Core-Datenbanktabellen per se als schlechte Praxis zu bezeichnen.
Die Wahl, ob Sie sich für Kerntabellen entscheiden oder eigene hinzufügen möchten, hängt von mehreren Faktoren ab.
Die Ausführungszeit einer Abfrage hängt von der Größe der Tabelle ab. Wenn Sie also vorhaben, erhebliche Datenmengen zu speichern, ist eine separate Tabelle, die nur diesen einen Typ eines bestimmten Datensatzes berücksichtigt, zwangsläufig die effizientere Lösung.
Wenn Sie eine Menge von regelmäßigen Beiträgen oder CPTs neben dieser spezifischen Datensätze speichern, wp_posts
sowie wp_postmeta
schnell wachsen.
Für mich hängt diese Wahl letztendlich davon ab, wie "posty" die Daten sind. Sollte es einen Autor, Kommentare, Überarbeitungen, Auszüge oder ähnliches unterstützen? Wenn ja, werde ich mit CPTs und / oder Kernfunktionalität gehen. Wenn nicht, werde ich aus Gründen der Ressourcennutzung und Effizienz mit separaten Tabellen arbeiten.
Wenn Eugenes Vorstellung richtig wäre, würde keines der vorhandenen gut geschriebenen Plugins seine eigenen Tabellen hinzufügen, was zum Glück nicht der Fall ist.
Die Verwendung von WP-Core-DB-Tabellen ist eine bewährte Methode
$wpdb
Klasse .wp_options
und das Erzwingen, dass der Plugin-Entwickler die Art der erstellten / gespeicherten Daten sorgfältig überlegt CPT? ist es eine Taxonomie? ist es Post Meta?WordPress bietet Plugins die Möglichkeit, Tabellen zu ihrer Datenbank hinzuzufügen
Verwenden Sie jedoch in Anwendungsfällen, in denen eine separate DB-Tabelle erforderlich ist, die von WordPress bereitgestellte Methode zum Hinzufügen Ihrer benutzerdefinierten Tabelle zur WordPress-Datenbank , insbesondere, damit Sie die leistungsstarke
$wpdb
Klasse nutzen können. Beachten Sie die Informationen / Vorbehalte, die in diesem Codex-Eintrag aufgeführt sind:Somit können wir folgendes schließen:
quelle
$wpdb
(die Verwendung mit Nicht-Core-Tabellen war in meiner Antwort impliziert, möchte diese Klasse nicht verpassen)Nicht-Kerndatenbanktabellen sind ein Muss, wenn Ihre Daten komplexer als das WordPress-Postmodell sind, sie riesig werden und viele Metadetails enthalten, die durchsucht werden.
Das EAV-Format, das WordPress für sein Post-Meta verwendet, eignet sich nicht gut für die Suche nach mehreren Kriterien.
Wenn Sie Ihr Meta in viele Einträge unterteilen, haben Sie zahlreiche Einträge pro Beitrag in der Beitrags-Metatabelle, und das Durchsuchen von Beiträgen über Metas ist viel langsamer.
Wenn Sie alle in einem Array serialisierten Metas speichern und nur einen Eintrag im Post-Meta haben, müssen Sie diesmal nur Textsuchen in diesem Meta durchführen, und Sie können Vergleichsoperatoren nicht direkt in Ihrer SQL-Abfrage verwenden.
Kein großes Problem, wenn Ihr Plugin nicht Tausende von Einträgen und zugehörigen Meta enthält.
Aber ein großes Problem, wenn Ihr Plugin etwas Großes tun wird.
Ihre Situation, ein Dateiname als unabhängiger Eintrag und 3 Metadateneinträge, die an diesen Eintrag angehängt sind, scheinen nicht so groß zu sein. Sie können dafür die WordPress-Post-Tabelle und die Meta-Tabelle verwenden.
ABER, wenn Leute viel nach diesen 3 Metas suchen, INSBESONDERE in Verbindung, dann würde ich empfehlen, dass Sie separate Tabellen einrichten.
Mit diesem Format wäre nur eine Tabelle mit nur einem Eintrag, der auch alle Metas enthält, in Ordnung und würde blitzschnell abfragen.
Wenn Sie WordPress-Tabellen verwenden und auch das Abfrage-Caching verwenden, wird der Benutzer, der nach Ihren Daten sucht, im Laufe der Zeit zwischengespeichert und weniger belastet. Aber das wäre nicht so umsichtig wie separate Tabellen.
quelle
Sie können Ihre Dateien in die Medienbibliothek hochladen. Jedes Element in der Medienbibliothek wird in einer
wp_posts
Tabelle gespeichert . Dies bedeutet, dass jede Datei Metadaten enthalten kann.wp_postmeta
Mithilfe der Metadaten-API können Sie für jede Datei in der Tabelle so viele Informationen speichern, wie Sie benötigen .Ja, es ist eine schlechte Praxis, eine eigene Tabelle zu erstellen, wenn Sie stattdessen die Kernfunktionalität verwenden können.
quelle
quelle