1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Datumsabfrage in einem Shortcode

Dieses Thema im Forum "Konfiguration" wurde erstellt von Progi, 8. November 2019.

  1. Progi

    Progi New Member

    Registriert seit:
    8. November 2019
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo

    Erläuterung:
    Ich habe eine Funktion die mir alle Termine von einer Event-Serie ausliest (getEventsOfEventSerie).
    Dann fülle ich eine Variable mit 4 Events:

    $nextFourEvents = getEventsOfEventSerie($activeEventtserie['serieId'], '4', 'ASC');

    Ich zeige dann diese 4 Events an:

    <?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


    Frage:
    Wie kann ich beim füllen von $nextFourEvents erreiche, dass ich nur die aktuellsten Events fülle, dass heisst anhand von dem Feld eventDateTimeFrom? 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 $nextFourEvents 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
     
  2. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    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).
     
  3. Progi

    Progi New Member

    Registriert seit:
    8. November 2019
    Beiträge:
    2
    Zustimmungen:
    0
    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 getEventsOfEventSerie (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)...
    $nextFourEvents = getEventsOfEventSerie($activeEventtserie['serieId'], '4', 'ASC');
    ...lese ich 4 Termine aus, und mit dem weitern Codeteil, zeige ich diese dann an...

    Hier nun der ganze Shortcode:

    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');


    Ich benötige nun Hilfe wie ich über das Feld eventDateTimeFrom (gehört zu einer Veranstaltung) in der Variable $nextFourEvents 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.
     
  4. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    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.
     
  5. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.348
    Zustimmungen:
    587
    Du übergibst der Funktion aber einen String und keine Zahl.


    cool, welchen Spaghetticode man produziern kann. Funktioniert dieser wirklich? man kann hier auch in weiss schreiben => Test


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


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

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    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

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ist zwar immer noch grauhig aber etwas besser...

    auch dies hier
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    würde ich eben überdenken.


    ach...
    nicht wirklich - aber wir haben Wochenende...
     
    #5 r23, 9. November 2019
    Zuletzt bearbeitet: 9. November 2019
  6. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.661
    Zustimmungen:
    1.783
    $ne->post_name ist der slug, insofern ist kein extra encoding nötig.

    Die besserer Lösung für WordPress wäre allerdings z.B.:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Weiterhin darf ein WordPress Shortcode nichts direkt ausgeben, sondern muss die Ausgaben per return am Ende zurückgeben, mehr dazu hier.

    Der für die Frage eigentlich relevante Code von getEventsOfEventSerie() fehlt leider komplett.

    Normalerweise würde man in WordPress get_posts() mit entspr. Datum-Query verwenden.
     
    #6 b3317133, 9. November 2019
    Zuletzt bearbeitet: 9. November 2019
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden