✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Laden Sie alle benutzerdefinierten WordPress-Felder über eine Datenbankabfrage

17

Beim Abrufen von Informationen aus der WordPress-Datenbank vermeide ich es, direkte Datenbankabfragen zu verwenden, aber es gibt Zeiten, in denen sie nützlich sein können (und es ist wichtig, dass es richtig gemacht wird).

Ein Anwendungsfall, in dem es hilfreich sein könnte, ist, wenn Sie einen Satz von Daten eines einzelnen Typs abrufen müssen. Ein typisches Beispiel: Angenommen, Sie müssen alle benutzerdefinierten WordPress-Felder laden.

Zum Zeitpunkt des Schreibens dieses Artikels ist mir keine Funktion bekannt, die dies tut, also frage ich die Datenbank wie folgt ab, um dies zu tun.

Laden Sie alle benutzerdefinierten WordPress-Felder

Bei benutzerdefinierten Feldern, die mit einem bestimmten Beitrag verknüpft sind, sind mehrere Dinge zu beachten:

  • benutzerdefinierte Felder werden in den Post-Metadaten gespeichert,
  • benutzerdefinierte Felder gelten als privat, daher wird ihnen ein Unterstrich vorangestellt.
  • die WordPress-Codierungsstandards werden dies nicht mögen (also müssen Sie die Standards möglicherweise ignorieren)

Sie können alles darüber im Codex nachlesen .

Und ja, es ist einfach, alle benutzerdefinierten Informationen für einen einzelnen Beitrag zu erhalten. Wenn Sie jedoch an einem Projekt arbeiten, bei dem Sie alle benutzerdefinierten Felder abrufen müssen, nämlich die privaten, müssen Sie sicherstellen, dass Sie Zeichenfolgen abfragen, die mit einem Unterstrich beginnen.

Um also alle benutzerdefinierten WordPress-Felder in die Datenbank zu laden, verwende ich hier die Abfrage :

<?php

function get_the_custom_fields() {

    global $wpdb;

    $results = $wpdb->get_results(
        $wpdb->prepare(
            "
            SELECT meta_key, meta_value
            FROM   $wpdb->postmeta
            WHERE  meta_key REGEXP '%s'
            ", '^[_]') );

    return $results;
}

Ein paar Dinge, die Sie bei der obigen Abfrage beachten sollten:

  • Ich verwende die Prepare- Funktion vor get_results. Dies dient der Parametrierung und Sicherheit. Wenn es neu für Sie ist, empfehle ich Ihnen, diesen Artikel zu lesen .
  • Dies gibt alle Metaschlüssel und Metawerte in einem Array zurück,
  • Je nachdem, wie viele Datensätze Sie zurückgeben möchten, kann dies einige Zeit dauern (und sollte möglicherweise in Stapeln erfolgen).

Schließlich, für diejenigen, die neugierig sind, existieren Indizes nicht in der meta_value-Spalte, sondern in der meta_key-Spalte.

Die Spalten in der Post-Meta-Tabelle mit Indizes.

Wenn Sie sich also dafür entscheiden, die Abfrage zu ändern und Spalten mit Indizes verwenden möchten, beziehen Sie sich auf meta_id, post_id und meta_key.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen