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

Datenbankabfragen zum schnellen Aktualisieren von Daten, Teil 1

5

Dies ist nicht das erste Mal, dass ich das erwähne, aber eine der Herausforderungen, die damit einhergehen, wenn man über das Schreiben direkter Datenbankabfragen zum Aktualisieren von Informationen in der WordPress-Datenbank spricht, besteht darin, dass man sich offen lässt für etwas wie:

Ja, aber es gibt eine API, um so etwas zu tun.

Und in vielen Fällen ist das richtig. Ich bin auch ein großer Fan davon, sie zu benutzen. Aber es gibt Zeiten, in denen direkte, parametrisierte Datenbankabfragen die optimalere Wahl sein können.

Datenbankabfragen zum schnellen Aktualisieren von Daten, Teil 1

Nein, es ist keine Datenbank, aber wäre es nicht toll, wenn sie so aussehen würden? Foto von Tobias Fischer auf Unsplash

Dies ist natürlich abhängig von der Umgebung, in der Sie arbeiten, den Anforderungen Ihres Projekts.

Dies ist also ein weiterer Beitrag, der veranschaulichen wird, wie man $wpdb verwendet, um Informationen basierend auf Metadaten schnell zu aktualisieren (ohne etwas wie WP_Query oder WP_Meta_Query zu verwenden, um damit umzugehen).

Datenbankabfragen zum schnellen Aktualisieren von Daten, Teil 1

Ich werde dies in zwei Teile aufteilen, weil die anfängliche Funktion, die ich Ihnen zeigen werde, mehr als eine Sache tut.

Ich bin kein Fan davon.

Zweitens ist es auch eine Gelegenheit, Funktionen neu zu gestalten, damit sie sich objektorientierter verhalten (wovon ich ein Fan bin und für den ich immer gerne werbe ).

Lassen Sie mich jedoch zunächst das vorliegende Problem darlegen

  1. Ich importiere ein paar Informationen von einer Drittanbieter-API.
  2. Die Informationen werden sowohl der Tabelle wp_posts als auch der Tabelle wp_postmeta zugeordnet.
  3. Es gibt bestimmte Metadaten, die den Status eines Beitrags bestimmen. Oder direkter: Wenn Metadaten vorhanden sind, sollte der Poststatus eines Beitrags auf Entwurf gesetzt werden, damit er nicht in der Hauptabfrage angezeigt wird.

Um dem entgegenzuwirken, müssen zwei Dinge geschehen:

  1. Wir brauchen die IDs der Stellen,
  2. Und wir müssen den Status der Beiträge ändern.

Bevor wir die Abfragen und den Rest des Codes einrichten, nehmen wir an, der von uns verwendete Metaschlüssel heißt acme-status. Und damit fangen wir an.

1 Holen Sie sich die Post-IDs mit dem zugehörigen Metaschlüssel

Zuerst erstellen wir eine Funktion namens setInactivePosts. Dies ist allgemeiner, als wenn Sie in einer bestimmten Domäne arbeiten, aber Sie verstehen, worauf es ankommt.

Dann richten wir eine Abfrage ein, die alle Post-IDs abruft, die diesen bestimmten Metaschlüssel haben :

Hier haben wir eine Reihe von Ergebnissen. Aber bevor wir irgendetwas tun, müssen wir sicherstellen, dass wir Daten haben, mit denen wir arbeiten können.

2 vorzeitig beenden?

Bevor wir jedoch mit der Aktualisierung der Informationen fortfahren, sollten wir prüfen, ob es Ergebnisse gibt. Und wenn nicht?

Dann können wir aussteigen.

3 Aktualisieren Sie den Beitragsstatus

Aber wenn es Ergebnisse gibt, sollten wir sie durchlaufen und ihren Beitragsstatus aktualisieren :

Wie sieht es denn zusammen aus?

4 Alle zusammen

Wenn wir diese Funktion, die größer als nötig ist, zusammensetzen, sehen Sie Folgendes :

Aber im nächsten Beitrag werden wir dies ein wenig umorganisieren, um es objektorientierter zu machen.

Ein Hinweis für Datenbankadministratoren

Für diejenigen unter Ihnen, die sich mit SQL-fu auskennen, wissen Sie, dass dies wahrscheinlich in einer einzigen Abfrage angegangen werden kann. Der Zweck dieses Posts und des Posts danach ist jedoch zweifach:

  1. Um zu zeigen, wie man mit $wpdb schnell etwas erreicht,
  2. Zu zeigen, wie man eine prozedurale Methode, etwas zu tun, in eine objektorientierte Methode, etwas zu tun, umwandelt.

In diesem Sinne danke für all die Fragen. 👍🏻

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