Bessere Post-Meta-Effizienz?

Ich arbeite mit Websites, die Post Meta für Post-Objekte innerhalb eines bestimmten Post-Typ verwenden müssen.

Ich füge häufig eine Meta-Box zu einem bestimmten Post-Typ hinzu, um zusätzliche Einstellungen für das neue Post-Objekt, das erstellt wird, bereitzustellen.

Sie können sich jetzt vorstellen, dass ich einige classn erstellt habe, die das Post-Meta-Management für meine täglichen Bedürfnisse erleichtern.

Ich habe es mir zur Gewohnheit gemacht, immer alle meine Custom-Field-Schlüssel voranzustellen. Ich habe mich entschieden, immer meine Initialen zu verwenden, und dann eine kurze Referenz für die Felder.

Zum Beispiel, wenn ich Sichtbarkeitseinstellungen zu allen Post-Objekten in einem bestimmten Post-Typ hinzufügen würde. Ein Präfix für ein benutzerdefiniertes Feld könnte wie mbe_visibility_ aussehen: mbe_visibility_ .

Also, wenn ich ein ‘globales’ benutzerdefiniertes Feld für das Post-Objekt hätte. Es könnte wie mbe_visibility_global aussehen: mbe_visibility_global .

Ich habe derzeit eine function, die alle benutzerdefinierten Felder für das Post-Objekt mbe_visibility_ , dann die zurückgegebenen Felder durchläuft und nur die Felder mbe_visibility_ die mein Feldschlüssel-Präfix ( mbe_visibility_ ) haben.

Wenn ich also drei benutzerdefinierte Felder hätte: Global , Post Types und Posts , hätte ich drei Schlüssel (die jeweils einen Wert enthalten, der beim Speichern des Post-Objekts angegeben wurde): mbe_visibility_global , mbe_visibility_post_types und mbe_visibility_posts .

Hier beginnen meine Fragen zu formulieren.

Ich habe das Gefühl, dass es ein wenig übertrieben ist, alle von WordPress Core zugewiesenen benutzerdefinierten Felder und andere verschiedene Plugins auf der Website zu entfernen.

Ich habe darüber nachgedacht, nur die Art und Weise zu ändern, wie Post Meta für meine benutzerdefinierten Felder gespeichert / referenziert wird.

Speichern Sie alle benutzerdefinierten Felder in EINEM Post Meta-Schlüssel für das Post-Objekt, statt einen neuen Post-Metaschlüssel für jedes benutzerdefinierte Felder zu speichern.

Mein Ansatz bestand darin, einfach all Ihre $_POST Daten in ein Array zu $_POST . So könnte ein Eingabefeld in einer Meta-Box aussehen:

Wenn Sie jetzt in save_post Sie nur prüfen, ob EINE Taste verfügbar ist.

if(isset($_POST['mbe_visibility'])) und speichern Sie das gesamte Array einfach in einem Post if(isset($_POST['mbe_visibility'])) .

update_post_meta($post_id, 'mbe_visibility', $_POST['mbe_visibility']) sollte wahrscheinlich die Daten vor dem Speichern update_post_meta($post_id, 'mbe_visibility', $_POST['mbe_visibility']) / validieren, aber dies ist nur zum Beispiel.

Alles, was ich jetzt tun muss, um irgendeinen meiner benutzerdefinierten Felder aus dem Post-Meta des Post-Objekts zu get_post_meta($post_id, 'mbe_visibility', true) ist nur: get_post_meta($post_id, 'mbe_visibility', true) und ich werde genau das haben, was ich für diesen Beitrag möchte Object, und muss nicht alle möglichen anderen unnötigen Post Meta aus WordPress Core oder anderen diversen Plugins holen und filtern.

Wenn Sie es mit meiner langatmigen Erklärung geschafft haben, lautet die Frage: Ist es eine schlechte Idee, all Ihre benutzerdefinierten Felder in einem Post-Metaschlüssel zu speichern, um die Datenverwaltung zu vereinfachen? VS. Speichern Sie jedes Ihrer benutzerdefinierten Felder in individuellen Post-Metaschlüsseln für jedes benutzerdefinierte Feld.

Natürlich würde ich gerne eine gültige Erklärung mit Begründung für Ihre Antwort sehen.

Solutions Collecting From Web of "Bessere Post-Meta-Effizienz?"

Wenn Sie nach Ihrem meta_key / meta_value meta_key meta_value dann speichern Sie sie nicht in einem einzigen Schlüssel. Wenn Sie einen einzelnen Schlüssel speichern, müssen Sie Ihre Daten als serialized Zeichenfolge oder ähnliches speichern. Die einzige Möglichkeit, nach der Sie suchen können, wäre eine ineffiziente %LIKE% -Abfrage, die wahrscheinlich ebenfalls errorsanfällig ist. Ähnliches gilt, wenn Sie Abfragen nach einem Ihrer Werte sortieren müssen. Sie können keine vernünftige alphanumerische oder numerische Sortierung aus einer serialisierten Zeichenfolge erhalten. Wenn Sie erwarten, dass Sie auf databaseebene manipulieren müssen, speichern Sie sie als einzelne meta_keys .

Wenn jedoch alles, was Sie jemals brauchen werden, ist, die Daten mit dem Meta-Schlüssel als monolithischen Block aus der database zu ziehen, sollten Sie in Ordnung sein.