Erweiterte benutzerdefinierte Felder zeigen die letzten drei Sub-Repeater-Zeilen an

8

Ich verwende Advanced Custom Fields (ACF), um Repeaterinformationen von einer Ereignisseite zu ziehen und eine verkürzte Liste der Ereignisse auf der Homepage anzuzeigen.

Ich habe einen Repeater eingerichtet, damit der Benutzer eingeben kann, in welchem ​​Monat das Ereignis stattfinden soll (Erlaubt es ihnen, mehrere Monate von Ereignissen einzutragen), und dann einen Sub-Repeater, um mehrere Ereignisse für das gegebene Ereignis hinzuzufügen Monat. Beispiel unten:

März

  • 9. März Veranstaltung
  • 12. März Veranstaltung
  • 28. März Veranstaltung

April

  • 1. April Veranstaltung
  • 28. April Veranstaltung

Dies ist die aktuelle Ausgabe auf der Ereignisseite und funktioniert wie vorgesehen.

Auf der Startseite der Website muss ich die 3 neuesten Ereignisse (das Ereignis, das am Ende der Liste ist, ist das neueste Ereignis) ziehen und sie auf der Homepage anzeigen.

Ich habe kein Problem mit dem Ziehen und Anzeigen der Ereignisse auf der Homepage. Woran ich ein Problem habe, ist die Anzeige der Ereignisse, wenn die letzten drei Ereignisse (der Child-Repeater) zwischen Monaten kreuzen (der Eltern-Repeater).

Durch die einfache Begrenzung der Ereignisausgabe über eine php-Schleife auf die Anweisungen if, while, wird nur die Anzahl der in diesem Monat ausgegebenen Ereignisse begrenzt. Mein Code, den ich momentan auf der Homepage verwende, ist unten.

%Vor%

Wie meine gewünschte Ausgabe auf der Startseite aussehen würde, wenn wir die drei letzten Ereignisse erfassen:

  • 28. März Veranstaltung
  • 1. April Veranstaltung
  • 28. April Veranstaltung
Gordon Smith 30.03.2017, 01:03
quelle

2 Antworten

0

Das mag nicht die Antwort sein, nach der jeder hier gesucht hat, aber hier ist das, was ich als Workaround gemacht habe, was mir gut genug geklappt hat.

Ich habe das Problem außerhalb von PHP gelöst, indem ich mit css die letzten drei Listenelemente ausgewählt habe. Hier ist, was ich benutzt habe, hat super funktioniert.

%Vor%     
Gordon Smith 13.04.2017, 15:28
quelle
1

Wahrscheinlich sollten Sie for anstelle von while verwenden. Und beachte den folgenden Algorithmus:

  

1) Holen Sie sich die last row from event_month

     

2) Zählen Sie die Anzahl der Ereignisse in diesem Monat

     

3) Wenn die Anzahl der Ereignisse größer oder gleich 3 ist.

     

3.1) Holen Sie sich die letzten 3 Ereignisse und zeigen Sie sie an

     

4) Else zählt die Anzahl der verbleibenden Ereignisse ( 3-<<events in last month>> )

     

4.1) Holen Sie sich die vorletzte Zeile und wiederholen Sie die Schritte 2,3,4

Wenn Sie die obige Logik verwenden, sollte Ihr Code etwa so aussehen:

%Vor%     
Nishanth Matha 05.04.2017 03:07
quelle