Datumsabfrage in einem Shortcode

  • Hallo

    Erläuterung:
    Ich habe eine Funktion die mir alle Termine von einer Event-Serie ausliest ([COLOR=#0000ff]getEventsOfEventSerie[/COLOR]).
    Dann fülle ich eine Variable mit 4 Events:

    [COLOR=#0000ff] $nextFourEvents = getEventsOfEventSerie($activeEventtserie['serieId'], '4', 'ASC');[/COLOR]

    Ich zeige dann diese 4 Events an:

    [COLOR=#0000ff]<?php if (count($nextFourEvents) > 0) {

    foreach ($nextFourEvents as $ne) { ?>
    <a href="/events/<?=$ne->post_name?>" target="_blank"><?=$ne->post_title?> (<?=get_field('eventDateTimeFrom', $ne->ID)?>)</a><br />
    <?php[/COLOR]

    Frage:
    Wie kann ich beim füllen von [COLOR=#0000ff]$nextFourEvents[/COLOR] erreiche, dass ich nur die aktuellsten Events fülle, dass heisst anhand von dem Feld [COLOR=#0000ff]eventDateTimeFrom[/COLOR]? Im Moment bekomme ich nur die vom Oktober.

    ich habe insgesamt 6 Termine. 4 wahren im Oktober und 2 sind im November. Eigentlich dürfte er nur noch die im November anzeigen, bzw, je nach dem ob die November-Termine noch in der Zukunft liegt oder nicht.

    Konkret sollte die Variabel [COLOR=#0000ff]$nextFourEvents[/COLOR] noch 2 oder nur 1 Event laden.

    Kann man dies irgenwie anhand des aktuellen Datum filtern?

    Vielen Dank für die schnelle Hilfe.
    Gruss Pogi

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Wende Dich an den Plugin Entwickler. Das Problem könnte eine fehlerhafte Parametrisierung der Funktion getEventsOfEventSerie() sein. Und beim nächsten Posting teilst Du uns dann auch bitte mit um welches Plugin es geht und was sonst noch in einen Thread gehört (siehe Forumsregeln).

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Hallo nochmals

    Sorry wollte niemand verärgern. Hier noch einige Angaben

    WP Version: 5.0.7
    Plugins: CPT IU

    Ich muss es in diesem Fall noch besser erläutern:

    Es geht zum einen nicht direkt um ein Plugin. Es geht um Shortcodes die ich unter "Design" --> "Editor" erstellt habe.

    Also ich habe über CPT UI normal ein Post Typ mit dem Namen "Veranstaltungen" erstellt. Diese Veranstaltungen werden in den Shortcodes mit dem Begriff "Events" verstanden. Weiter habe ich ein Post Typ mit den Namen "Veranstaltungen Serie" erstellt, indem ich Veranstaltungen auf einer Seite als Serie zusammenfasse.

    Mit der Funktion [COLOR=#0000ff]getEventsOfEventSerie [/COLOR](innerhalb eines Shortcodes) lese ich alle Veranstaltungen einer aktiven Serie aus. Im meinem Fall 6 Veranstaltungstermine (siehe Post 1 oben).

    Mit der Codezeile (aus dem unten aufgeführten Shortcode)...
    [COLOR=#0000ff]$nextFourEvents = getEventsOfEventSerie($activeEventtserie['serieId'], '4', 'ASC');[/COLOR]
    ...lese ich 4 Termine aus, und mit dem weitern Codeteil, zeige ich diese dann an...

    Hier nun der ganze Shortcode:

    [COLOR=#0000ff]function next_event() {

    $activeEventserie = getActiveEventSerie();
    //print_r($activeEventserie);
    $nextFourEvents = getEventsOfEventSerie($activeEventserie['serieId'], '4', 'ASC');
    //print_r($nextFourEvents);
    ?>
    <h3><?=$activeEventserie['serieTitle']?></h3>
    <p><?=$activeEventserie['postContent']?></p>

    <?php if (count($nextFourEvents) > 1) { ?>
    <h5>Die nächsten Veranstaltungen dieser Serie:</h5>
    <?php } else if (count($nextFourEvents) == 1) { ?>
    <h5>Die nächste Veranstaltung in dieser Serie:</h5>
    <?php } else { ?>
    Die aktuelle Serie endet am Ende dieses Monats.
    <?php } ?>

    <?php if (count($nextFourEvents) > 0) {

    foreach ($nextFourEvents as $ne) { ?>
    <a href="/events/<?=$ne->post_name?>" target="_blank"><?=$ne->post_title?> (<?=get_field('eventDateTimeFrom', $ne->ID)?>)</a><br />
    <?php
    }
    }
    }
    add_shortcode('next_event', 'next_event');[/COLOR]

    Ich benötige nun Hilfe wie ich über das Feld [COLOR=#0000ff]eventDateTimeFrom [/COLOR](gehört zu einer Veranstaltung) in der Variable [COLOR=#0000ff]$nextFourEvents [/COLOR]nur die Veranstaltungen zurückbekomme, die vom aktuellen Datum in der Zukunft liegen.

    Ich hoffe es ist nun verständlich und danke für die Hilfe.

  • Du hast also eigene Funktionen geschrieben und möchtest nun, dass wir diese Debuggen?

    Dann schlage ich vor, dass Du Dich zunächst an den WordPress Codex hältst:

    Use lowercase letters in variable, action/filter, and function names (never camelCase). Separate words via underscores. Don’t abbreviate variable names unnecessarily; let the code be unambiguous and self-documenting.

    Dann müsstest Du jede Funktion, die Du in Deinem Code aufrufst ebenfalls posten, wie z.B. getEventsOfEventSerie(), getActiveEventSerie() oder eventDateTimeFrom().

    Für meinen Geschmack ist dass dann doch etwas zu viel für Hilfe zur Selbsthilfe. Eventuell sehen andere Forenmitglieder das anders, aber meiner Meinung nach muss sich ein Programmierer der den eigenen Code nicht zum Laufen bekommt im Jobforum Hilfe holen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.


  • Mit der Funktion [COLOR=#0000ff]getEventsOfEventSerie [/COLOR](innerhalb eines Shortcodes) lese ich alle Veranstaltungen einer aktiven Serie aus. Im meinem Fall 6 Veranstaltungstermine (siehe Post 1 oben).

    Mit der Codezeile (aus dem unten aufgeführten Shortcode)...
    [COLOR=#0000ff]$nextFourEvents = getEventsOfEventSerie($activeEventtserie['serieId'], '4', 'ASC');[/COLOR]
    ...lese ich 4 Termine aus, und mit dem weitern Codeteil, zeige ich diese dann an...

    Du übergibst der Funktion aber einen String und keine Zahl.


    [COLOR=#0000ff][COLOR=#bfbfbf]cool, welchen Spaghetticode man produziern kann. Funktioniert dieser wirklich? man kann hier auch in weiss schreiben => [COLOR=#ffffff]Test[/COLOR][/COLOR][/COLOR]
    [COLOR=#0000ff]


    <a href="/events/<?=$ne->post_name?>" target="_blank"><?=$ne->post_title?> (<?=get_field('eventDateTimeFrom', $ne->ID)?>)</a><br />


    [/COLOR]
    Die Zeile erinnert jetzt an PHPNuke. Bei target="_blank" würde ich ein [size=24]rel=noopener anfügen.[/SIZE]
    https://mathiasbynens.github.io/rel-noopener/


    Jetzt hast du viel Darma gezeigt - leider kaum lesbar - Short Tags sind wirklich grauhig,

    Code
    <?=$ne->post_name?>

    Bist du dir sicher, dass du gültigen Html Code hier bekommst und nicht:

    <a href="/events/30 jahre mauerfall">30 jahre mauerfall (glaskugel ... 42 )</a><br>

    Verwende besser
    https://www.php.net/manual/de/function.rawurlencode.php

    PHP
    <?php echo rawurlencode($ne->post_name); ?>

    ist zwar immer noch grauhig aber etwas besser...

    auch dies hier

    Code
    <a href="/events/


    würde ich eben überdenken.



    Ich benötige nun Hilfe wie ich über das Feld [COLOR=#0000ff]eventDateTimeFrom [/COLOR](gehört zu einer Veranstaltung) in der Variable [COLOR=#0000ff]$nextFourEvents [/COLOR]nur die Veranstaltungen zurückbekomme, die vom aktuellen Datum in der Zukunft liegen.

    ach...


    Ich hoffe es ist nun verständlich und danke für die Hilfe.

    nicht wirklich - aber wir haben Wochenende...

    Mit offenen Augen träumen

    2 Mal editiert, zuletzt von r23 (9. November 2019 um 00:51)

  • Code
    <?=$ne->post_name?>

    Bist du dir sicher, dass du gültigen Html Code hier bekommst und nicht:

    <a href="/events/30 jahre mauerfall">30 jahre mauerfall</a>


    [FONT=Courier New]$ne->post_name[/FONT] ist der slug, insofern ist kein extra encoding nötig.

    Die besserer Lösung für WordPress wäre allerdings z.B.:

    PHP
    <a href="<?php echo esc_url( get_permalink( $ne->ID ) ); ?>" target...

    Weiterhin darf ein WordPress Shortcode nichts direkt ausgeben, sondern muss die Ausgaben per [FONT=Courier New]return[/FONT] am Ende zurückgeben, mehr dazu hier.

    Der für die Frage eigentlich relevante Code von [FONT=Courier New]getEventsOfEventSerie()[/FONT] fehlt leider komplett.

    Normalerweise würde man in WordPress [FONT=Courier New]get_posts()[/FONT] mit entspr. Datum-Query verwenden.

    5 Mal editiert, zuletzt von b3317133 (9. November 2019 um 01:10)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!