it-swarm.com.de

Was ist die effizienteste Datenbankmethode, um usermeta hinzuzufügen und abzufragen?

Was ist in Bezug auf die Datenbank die effizienteste Methode, um einem Profil zusätzliche Usermeta-Felder hinzuzufügen und abzufragen?

Ich muss einem Benutzerprofil vier zusätzliche Felder mit numerischen Daten und Textdaten hinzufügen und diese dann abfragen, um die Daten für die Anzeige in einer Vorlage zu kompilieren. Und es gibt möglicherweise Tausende von Benutzern.

Es gibt viele Beispiele, um die Daten in usermeta zu speichern. Aber sollte diese Datenmenge in der Usermeta-Tabelle gespeichert werden?

Oder sollte ich alles in einer neuen Datenbanktabelle speichern? Und wenn ja, wie initialisiere ich eine neue Tabelle und schreibe dann darauf?

2
markratledge

Es gibt viele Beispiele, um die Daten in usermeta zu speichern. Aber sollte diese Datenmenge in der Usermeta-Tabelle gespeichert werden?

Ich sehe keinen Grund, warum Sie die Standard-Benutzer-Metadatentabelle nicht verwenden sollten, schließlich ist das, wofür es ist, unabhängig von der Anzahl der Benutzer/Felder.

Die Benutzer-Metafunktion, z. B. get user meta, verwendet get_metadata, wobei das Objekt $meta_type auf user festgelegt ist. http://codex.wordpress.org/Function_Reference/get_metadata

Wenn Sie mit neuen Tabellen herumspielen möchten, können Sie die Klasse $wpdb verwenden und eine neue erstellen. In diesem Beitrag wird erläutert, wie http://codex.wordpress.org/Creating_Tables_with_Plugins .

Es gibt auch ein Plugin namens Pods CMS, mit dem Sie benutzerdefinierte Datenbanktabellen für Inhaltstypen erstellen können. Verwenden Sie jedoch nur die integrierten Benutzer-Metatabellen, sofern Sie keinen bestimmten Grund dafür haben.

3
Wyck

Ich habe eine Website (auch ein Kunde von mir hat sie), die etwas mehr als 5000 Benutzer hat, und für jeden Benutzer speichern wir 9 verschiedene Metafelder (Zeilen) in der Usermeta-Tabelle, und ich werde wirklich keine Probleme damit sehen Fügen Sie hinzu, dass 6 dieser Metafelder tatsächlich Arrays von Daten sind, die 4 bis 13 verschiedene Werte enthalten (Integer, String und Boolean), sodass wir in den meisten Fällen nur einen get_user_meta()-Aufruf für alle benötigten Werte dieser Seite durchführen. Die anderen drei Felder müssen abgefragt werden, damit sie nicht in einem Array enthalten sind.

Insgesamt hat jeder Benutzer also 80-96 benutzerdefinierte Felder, die alle in 9 Zeilen gespeichert sind.

Nachdem dies gesagt wurde, ist die Verwendung einer benutzerdefinierten Tabelle schneller (einfache Tatsache), aber ist es die Mühe wert?

2
Bainternet