Supporto » Varie ed eventuali » if scadenza < data attuale

  • Risolto aledevil

    (@aledevil)


    Salve a tutti,
    sto sviluppando un sito con wordpress ed ho installato il plugin acf pro per alcune funzionalità aggiuntive di cui avevo bisogno.

    In particolare, ho degli eventi, gestiti con acf, che mi restituiscono nel frontend il luogo, l’immagine, la data e l’ora dell’evento.

    Fin qui tutto semplice!

    Ora arriva il punto:
    vorrei fare in modo che l’evento in questione venga visualizzato solamente nel caso in cui la data dell’evento sia precedente alla data odierna!
    Ho già provato ad inserire un IF($data<$today) dove la $data è il campo del ripetitore di acf, mentre $today è una funzione che mi restituisce la data odierna! Purtroppo questa soluzione non funziona e non riesco a capire perchè.

    Qualcuno può aiutarmi?

    qui di seguito incollo il codice non funzionante:

    if( have_rows('gig', 'option') ) {
    while ( have_rows('gig', 'option') ) : the_row(); { ?>
    CODICE PER PREPARARE RIGHE
    <?php 
    $today = date("d/m/Y H:i");
    $date = the_sub_field('date');
    if($date < $today) { ?>
    CODICE PER SINGOLI EVENTI
    <?php ; } ?>
    </div>
    </div>
    <?php }; endwhile;
    } else { echo "Nessun evento trovato!"; } 
    ?>
Stai visualizzando 7 risposte - dal 1 al 7 (di 7 totali)
  • Ciao @aledevil,

    non ho provato il codice ma mi sembrerebbe che tu stia provando a comparare stringhe di testo e non numeri: consiglierei di provare a fare un “cast”. Qualcosa come:

    $today = date("d/m/Y H:i");
    $date = the_sub_field('date');
    $today_int = (int)$today;
    $date_int = (int)$date;
    if($date_int < $today_int) { ?>...

    Tienici aggiornati 😉

    Chi ha creato la discussione aledevil

    (@aledevil)

    Ciao! Grazie per il consiglio, ma non funziona, continua comunque a stamparmi tutto senza distinzione fra data scaduta e data ancora valida!

    Ho provato anche a semplificare togliendo l’ora e mettendoli in un campo a parte di acf, quindi il mio $date stampa la data in formato “d/m/Y” così come $today

    Può significare qualcosa il fatto che sia dentro un ripetitore?

    @aledevil,

    proverei allora a verificare l’output delle variabili: cosa stampa se aggiungi

    print_r($today_int);
    print_r($date_int);

    ?

    Dovrebbe stampare i due valori da comparare.

    Chi ha creato la discussione aledevil

    (@aledevil)

    stampando quelle due variabili, i risultati sono questi:
    21 (data attuale)
    31 (data dell’evento, 31/08/2018)

    che mi andrebbe anche bene, ma se la data è passata (esempio 25/05/2018) mi stampa 25, quindi risulterebbe > della data attuale e mi stampa comunque l’evento cosa che non dovrebbe fare

    @aledevil,

    mi sembra ottimo: sarà quindi solamente necessario scomporre i singoli elementi della data e verificarli come ti fa comodo con molteplici “if”. Per esempio aggiungere al controllo:

    $today_year = date("Y");
    $date_year = substr(date("Y"), -1, 4);
    if( $today_year > $date_year){

    Potrebbe risolvere?

    • Questa risposta è stata modificata 5 anni, 7 mesi fa da _Y_Power. Motivo: modificato codice
    Chi ha creato la discussione aledevil

    (@aledevil)

    Forse ho risolto!
    Ho aggiunto un campo in acf chiamato “scadenza” che mi stampa la data di scadenza in formato “Ymd”, ho modificato il mio $today in modo che mi stampi anche quello in formato “Ymd” ed in quetso modo riesco a verificarle e confrontarle fra di loro

    Ottimo, @aledevil!

    Se il problema è risolto, ti prego di marcare il topic come tale: altrimenti puoi continuare qui se hai altri problemi inerenti al problema originale oppure aprire un nuovo topic per chiedere supporto per problemi di altra natura.

    Cheers!

Stai visualizzando 7 risposte - dal 1 al 7 (di 7 totali)
  • Il topic ‘if scadenza < data attuale’ è chiuso a nuove risposte.