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

Aktualisieren nachfolgender Ereignisse in Ereigniskalenderbeiträgen

3

Dies ist ein wirklich nuancierter Fall, aber ich dachte, es könnte sich lohnen, zu versuchen, einen Beitrag für jeden zu verallgemeinern, der möglicherweise mit zukünftigen Ereignissen im Veranstaltungskalender von Modern Tribe arbeitet.

Angenommen, Sie richten ein wiederkehrendes Ereignis ein und möchten im Hauptteil des Ereignisses (oder besser gesagt post_content) Folgendes sagen:

Es ist N Jahre her, seit [dieses Ereignis] stattgefunden hat.

Die Sache ist, dass jedes nachfolgende Ereignis offensichtlich ein Jahr größer sein wird als das davor. Sie können den Wert also nicht unbedingt fest in die Ereignisse codieren, ohne dass er in den Beitragsinhalt jedes Ereignisses eingefügt wird.

Was ist also eine Möglichkeit, dies anzugehen?

Aktualisieren nachfolgender Ereignisse

Wie bei den meisten Dingen hängt dies davon ab, wie Ihre Codebasis eingerichtet ist, aber wenn Sie mit Serienereignissen arbeiten, ist das nicht so schlimm.

Für diesen Beitrag gehe ich davon aus:

  1. Sie haben Ereignisse so eingerichtet, dass Sie das erste Ereignis in einer Reihe haben, und dann haben Sie nachfolgende Ereignisse),
  2. Sie können einfache Abfragen mit $wpdb ausführen ,
  3. Sie sind vertraut mit einfachen regulären Ausdrücken,
  4. Sie sind mit wp_update_post vertraut

Der allgemeine Prozess, mit dem Sie jedes Ereignis aktualisieren können, um die richtige Anzahl von Jahren in seinem post_content widerzuspiegeln, sieht ungefähr so ​​​​aus :

  1. Verwenden Sie das erste Ereignis in der Reihe, um alle nachfolgenden Beiträge zu finden,
  2. Suchen Sie die Nummer im post_content und erhöhen Sie sie um eins,
  3. aktualisiere den Beitrag.

Ziemlich einfach, oder? Hier ist, wie es geht.

1 Nachfolgende Ereignisse finden

Um nachfolgende Ereignisse zu aktualisieren, ist es wichtig, die ID des Hauptereignisses zu haben. Dies ist normalerweise einfach zu ermitteln, wenn Sie das Ereignis bereits programmgesteuert erstellt haben, da Tribe_create_event die Beitrags-ID zurückgibt.

Andernfalls können Sie beispielsweise einen Beitrag nach seinem Titel oder ähnlichem suchen. Und sobald Sie diesen Beitrag haben, können Sie seine ID abrufen.

Wenn Sie fertig sind, schreiben Sie eine schnelle Abfrage, um alle Beiträge mit der anfänglichen Beitrags-ID als übergeordnetem Element abzurufen :

Offensichtlich ziehe ich es vor, dies in seine Funktion aufzunehmen, damit ich es an mehreren Stellen in der Anwendung aufrufen, nach Bedarf debuggen und seine Verantwortung isolieren kann.

Möglicherweise möchten Sie die Ergebnisse als Sammlung von Objekten zurückgeben oder der Abfrage weitere Qualifizierer hinzufügen, um die Art der zurückgegebenen Ergebnisse einzuschränken. Unabhängig davon ist die wichtigste Erkenntnis aus diesem Code, dass Sie die IDs und post_content aller nachfolgenden Posts in einer Reihe basierend auf der ID des ursprünglichen Ereignisses abrufen.

2 Aktualisieren Sie den Beitragsinhalt

Sobald die Ereignisse zurückgegeben wurden, kann eine Schleife eingerichtet werden, um sie zu durchlaufen. Abhängig davon, wie Sie die Schleife definieren, wird bestimmt, wie Sie einen Zähler einrichten, aber eine der grundlegendsten Möglichkeiten, dies zu tun, ist:

  1. Definieren Sie einen Wert, beginnend bei Eins, den Sie bei jeder Iteration hinzufügen und erhöhen können.
  2. Addieren Sie dies zu der im Beitrag gefundenen Ziffer.

Wenn Sie also eine foreach -Schleife verwenden, könnte der Code in etwa so aussehen :

Dies wird etwas komplizierter, wenn Sie mehrere Ziffern im Text Ihres Beitrags haben, aber dies reicht aus, um eine Vorstellung davon zu vermitteln, wie Sie mit mindestens einer arbeiten können (wie im Beispiel oben im Beitrag).

3 Aktualisieren Sie den Beitrag

Schließlich, sobald der post_content aktualisiert wurde, geht es wirklich nur darum, eine WordPress-API aufzurufen, um den Inhalt des Beitrags zu aktualisieren.

Wie im gesamten Beitrag erwähnt, kann Ihr Code natürlich anders aussehen, die Leistungsaspekte davon können unterschiedlich sein oder einige andere Überlegungen erfordern (auf die ich gleich eingehen werde).

Aber zumindest ist dies zumindest ein Anfangspunkt.

Andere Überlegungen

Es kann Zeiten geben, in denen der Beitragsinhalt mehrere Zahlen enthält, oder es kann Zeiten geben, in denen es Tausende von nachfolgenden Ereignissen geben kann. In jedem dieser Fälle ist der obige Ansatz möglicherweise nicht geeignet.

Das heißt, Sie können diese Schritte immer noch befolgen, aber sie sind möglicherweise nicht die leistungsstärksten, wie sie geschrieben wurden. In diesem Fall müssen Sie möglicherweise einen Batch-Prozess einrichten, um das Problem zu handhaben, oder dies außerhalb der Geschäftszeiten mit einem Cron-Job oder einer von mehreren anderen Möglichkeiten zur Lösung des Problems tun.

Die oben genannten Ansätze gehen über den Rahmen dieses Beitrags hinaus, aber der dreistufige Ansatz bleibt derselbe. Es geht mehr um Teile und Herrsche, um das Problem anzugehen, als darum, wie es gelöst wird.

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