Impostare scadenza articoli wordpress

Durante la realizzazione di un sistema per la gestione di banner pubblicitari sul sito di una testata giornalistica, mi sono trovato di fronte al problema di impostare la scadenza degli articoli in WordPress.

Se inizialmente l’avevo giudicato un problema alquanto ostico, mi sono reso conto ben presto che invece era di una semplicità disarmante. Vediamo insieme come fare.

Introduzione

Una volta redatti, gli articoli di WordPress puoi pubblicarli subito oppure programmarli per andare online nel futuro, vedi apposito box Pubblica nel pannello di amministrazione. Ma non avevi la possibilità di impostare una data di scadenza… finora 😉

Primo passo: impostiamo un campo personalizzato per inserire la data di scadenza

Siccome l’opzione non c’è, la creiamo noi mediante l’aggiunta di un campo personalizzato. Vi sono due possibilità per crearlo: una più complessa ma molto elegante, agendo sul file function.php, e un’altra molto semplice. Per ora utilizzeremo quest’ultima, ma mi riservo di scrivere un post a parte su come creare l’altra.
Procediamo.

  1. Siamo nel pannello di amministrazione alla voce Articoli/Aggiungi nuovo e in basso c’è il box Campi personalizzati (altresì attivabile dal bottone Impostazioni schermata in alto a destra ad inizio pagina);
  2. In questo box, click sul bottone Aggiungi nuovo;
  3. Scrivere, nel box sotto a Nome, “data_scadenza”;
  4. A destra di questo campo c’è il box Valore, inserire la data nel formato: aaa-mm-gg hh:mm:ss (es.: 2016-06-01 23:45:00 = primo giugno del 206 alle ore 23 e 45 minuti);
  5. Click sul bottone Aggiungi campo personalizzato;
  6. Una volta creato questo campo, non ci sarà bisogno di ricrearlo, ma basterà sceglierlo dal menu a tendina Selezione, sempre nel box dei Campi personalizzati.

Campi personalizzati in wordpress

Secondo passo: test della scadenza nel codice

A questo punto il nostro articolo avrà la scadenza, dobbiamo solo testare se sia minore della data corrente, ecco come:

  1. Accedete ai file del vostro tema via FTP e aprite il file single.php;
  2. All’interno dovreste avere il loop o la query all’articolo o comunque un codice simile a questo:
    if ( have_posts() ) {
    while ( have_posts() ) {
    the_post();
    the_title();
    the_content();
    } // fine while
    } // fine if
  3. Posizionatevi dopo la funzione the_post() e inserite la chiamata al campo personalizzato data_scadenza:
    $data_scadenza = get_post_meta( get_the_ID(), 'data_scadenza', true );
  4. Ora non ci resta che testare se la data di scadenza sia minore di quella attuale, inserendo un if subito dopo la riga precedente:
    if ($data_scadenza > current_time('mysql')) {
    the_title();
    the_content();
    }
    
  5. Riassumendo, ecco una visione d’insieme del codice inserito finora:
    if ( have_posts() ) {
    while ( have_posts() ) {
    the_post();
    $data_scadenza = get_post_meta( get_the_ID(), 'data_scadenza', true );
    if ($data_scadenza > current_time('mysql')) {
    the_title();
    the_content();
    } // chiude controllo data
    } // chiude while
    } // chiude if
    

Conclusione

Questo semplice codice può essere inserito in qualsiasi loop che necessiti di un controllo scadenza. A me è servito, come dicevo, per creare un sistema di gestione dei banner pubblicitari e quindi è all’interno di un loop corredato dall’oggetto WP_Query che filtra solo i contenuti personalizzati di tipo banner.

Se avete domande, lasciate un commento!

Facebook Twitter Pinterest Email