it-swarm.com.de

Beiträge aus der Abfrage speichern und später über aufrufen AJAX Anruf

Um den obigen Fragentitel zu verdeutlichen, versuche ich, ein Raster mit Beiträgen zu erstellen, für das ich ein Miniaturbild eines Bildes anzeige, das diesem Beitrag angehängt ist.

Wenn Sie dann auf jedes dieser Bilder im Raster klicken, möchten Sie den Rest des Inhalts des Posts (der benutzerdefinierte Felddaten enthält) über JS unter dem Rasterelement anzeigen.

Mein ganzer Frontend-Code funktioniert. Ich möchte jedoch das Backend so einrichten, dass die Beiträge einmal abgefragt werden (zunächst beim Erstellen des Rasters). Wenn Sie dann die Vorschau jedes Beitrags anzeigen, ziehen Sie die verbleibenden Felder, die ich von jedem Beitrag benötige, in mein Vorschau-HTML und zeigen Sie sie an.

Im Backend möchte ich also Folgendes tun:

  1. Fragen Sie beim Laden der Seite die Datenbank nach Beiträgen ab und speichern Sie sie in PHP. In einem Array oder Objekt.
  2. Verwenden Sie bestimmte Felder, um ein Raster mit Post-Thumbnails zu erstellen.
  3. Wenn Sie auf die Miniaturansicht klicken, rufen Sie AJAX auf (Übergabe der Beitrags-ID) und geben Sie die Felder aus dem Array für das Objekt für diese Beitrags-ID über JSON zurück.
  4. In Vorschau-HTML laden und anzeigen.

Also, mit diesem Szenario im Hinterkopf. Wie speichere ich die Ergebnisse meiner Abfrage (in einer Funktion) und greife später über AJAX auf diese Daten zu?

Vielen Dank im Voraus, Craig

1
BarberCraig

Das Laden der Seite ist eine Anforderung, die Software führt eine Antwort aus und schließt die Ausführung ab. Später Ajax ist eine andere Anfrage, völlig getrennt. Wenn Sie möchten, dass Objekte zwischen Anforderungen dauerhaft verfügbar sind, haben Sie nur zwei Möglichkeiten: Verwenden Sie transiente APIs oder verwenden Sie Objekte Cache-API kombiniert mit einem Cache-Plugin (Objekt-Cache-API ist standardmäßig nicht persistent).

Ein sehr einfaches Beispiel für die Transienten-API:

if( false === ( $my_object = get_transient('transient_object_name') ) ) {

    // Build your $my_object here
    // For example
    $args= array();
    $query = new WP_Query( $args );

    $my_object = $query->get_results();

    // Store $my_object in a transient
    set_transient('transient_object_name', $my_object );
 }

Später können Sie dann get_transient('transient_object_name') verwenden, um den zuvor gespeicherten Übergang abzurufen.

Transient API speichert das Objekt in der Datenbank (Optionstabelle), um es bei nachfolgenden Anforderungen ohne einen neuen Datenbankaufruf abrufen zu können (also ein Datenbankaufruf, um die transiente, aber nicht die vollständige Operation zum Erstellen des Objekts abzurufen).

Die Objekt-Cache-API ist sehr ähnlich, aber standardmäßig nicht persistent. Das Objekt speichert zwischengespeicherte Objekte im Speicher anstelle der Datenbank und wird nur für die aktuelle Anforderung zwischengespeichert. Um es zwischen getrennten Anforderungen persistent zu machen, müssen Sie ein persistentes Cache-Plugin wie W3TC verwenden.

Wenn ein Plugin für persistenten Cache verfügbar ist, beendet die transiente API das Speichern des Transienten in der Datenbank und funktioniert genauso wie die Objekt-Cache-API. Das Speichern im Speicher ist jedoch in beiden Fällen persistent.

1
cybmeta