Ich verwende Advanced Custom Fields (ACF), um Repeater-Informationen von einer Ereignisseite abzurufen 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 wird (was ihm ermöglicht, mehrere Monate mit Ereignissen einzugeben), und dann einen Sub-Repeater, mit dem er mehrere Ereignisse für den angegebenen Monat hinzufügen kann. Beispiel unten:
Marsch
- Veranstaltung am 9. März
- Veranstaltung am 12. März
- Veranstaltung am 28. März
April
- Veranstaltung am 1. April
- Veranstaltung am 28.04
Dies ist die aktuelle Ausgabe auf der Ereignisseite und funktioniert wie vorgesehen.
Auf der Startseite der Website muss ich die 3 neuesten Ereignisse abrufen (das Ereignis, das sich am Ende der Liste befindet, ist das neueste Ereignis) und sie auf der Startseite anzeigen.
Ich habe kein Problem mit dem Ziehen und Anzeigen der Ereignisse auf der Homepage. Womit ich ein Problem habe, ist die Anzeige der Ereignisse, wenn sich die letzten drei Ereignisse (der untergeordnete Repeater) zwischen den Monaten (der übergeordnete Repeater) kreuzen.
Durch einfaches Begrenzen der Ereignisausgabe mit einer PHP-Schleife über die if-, while-, Anweisungen wird nur die Anzahl der in diesem Monat ausgegebenen Ereignisse begrenzt. Mein Code, den ich derzeit auf der Homepage verwende, ist unten.
<?php if( have_rows('event_month', 1263)): ?>
<ul>
<?php while ( have_rows('event_month', 1263) ) : the_row(); ?>
<?php if( have_rows('event', 1263)):; ?>
<?php while ( have_rows('event', 1263) ) : the_row(); ?>
<li>
<h3>
<a href="https://stackoverflow.com/questions/43106718/<?php echo esc_url( home_url("https://stackoverflow.com/" ) ); ?>events/"><?php $summary = get_sub_field('event_title');
echo substr($summary, 0, 34),'...'; ?></a>
<span><?php the_sub_field('event_day_of_week');?>, <?php the_sub_field('event_sub_month');?> <?php the_sub_field('event_day');?></span>
</h3>
</li>
<?php endwhile; ?>
<?php else: ?>
<p>Show dates to be announced soon.</p><?php the_sub_field('event_title'); ?>
<?php endif; ?>
<?php endwhile; ?>
</ul>
Wie meine gewünschte Ausgabe auf der Startseite aussehen würde, wenn wir die drei letzten Ereignisse erfassen:
- Veranstaltung am 28. März
- Veranstaltung am 1. April
- Veranstaltung am 28.04
Gibt es einen Grund, nicht nur einen einzelnen Repeater mit einem Datumseingabefeld zu verwenden? Sie können dann den Monat daraus extrahieren, um an anderer Stelle auf der Website gut mit Ihrem Code zu spielen, und es würde das Sortieren der neuesten Einträge auf der Homepage zu einem Kinderspiel machen.
– Leland
5. April 2017 um 3:32 Uhr
@Leland – Ich weiß es zu schätzen, dass Sie fragen, da ich das nicht in Betracht gezogen hatte. Hier ist ein Link zu der Seite, auf der die Ereignisse in jedem Monat angezeigt werden. ardentsolutionsllc.com/events Wenn ich nur einen Repeater verwenden würde, wüsste ich nicht, wie ich die Ereignisse jedem Monat zuordnen soll. Die Startseite zeigt die Liste der Ereignisse (unten rechts), die ich zu verkürzen versuche, um nur 3 der neuesten Ereignisse anzuzeigen, die normalerweise am Ende jedes Monats auf der Ereignisseite erscheinen.
– Gordon Smith
5. April 2017 um 16:36 Uhr
Okay, ich lese Ihren Beitrag noch einmal – Sie möchten auf der Homepage die 3 zuletzt hinzugefügte Veranstaltungen? Das heißt, Sie möchten auf der Startseite die 3 Ereignisse anzeigen, die zuletzt im WordPress-Admin erstellt wurden? Oder möchten Sie lieber die 3 Ereignisse, die am frühesten bis heute stattfinden?
– Leland
5. April 2017 um 17:25 Uhr
@Leland Ich hätte gerne die drei neuesten Veranstaltungen, die unten auf der Veranstaltungsseite erscheinen (über den Link oben). Normalerweise würde ich die von Elliott hier vorgeschlagene Methode verwenden support.advancedcustomfields.com/forums/topic/… aber es wird nicht funktionieren, da einige Ereignisse möglicherweise über Wiederholungsmonate hinweg abgerufen werden müssen (manchmal Beispiel: 2 im Mai veröffentlichte Ereignisse erfordern, dass 1 Ereignis aus dem April abgerufen wird, um 3 auf der Homepage zu erstellen).
– Gordon Smith
5. April 2017 um 20:49 Uhr
Hey, entschuldige die vielen Fragen – ich habe Code, bei dem ich helfen könnte, aber ich möchte nur etwas besser verstehen, wonach du suchst. Sie möchten die “drei neuesten Ereignisse … unten auf der Ereignisseite”. Mit anderen Worten, Sie wollen die 3 Ereignisse, die am weitesten in der Zukunft liegen? Ist das korrekt?
– Leland
5. April 2017 um 21:01 Uhr