[PHP] Cookie si cancella prima

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ho questo codice che mette la parola New sulle immagini-anteprime dei nuovi articoli, il cookie è impostato su 30 giorni, però se io aggiorno la home o se clicco un'altra anteprima-articolo anche vecchio, poi ritorno al nuovo articolo e la marcatura New è sparita. Non dovrebbe durare 30 giorni?
PHP:
/* Codice che marca i nuovi articoli con "New" */
function wpb_lastvisit_the_title ( $title, $id ) {

if ( !in_the_loop() || is_singular() || get_post_type( $id ) == 'page' ) return $title;

// if no cookie then just return the title

if ( !isset($_COOKIE['lastvisit']) ||  $_COOKIE['lastvisit'] == '' ) return $title;
$lastvisit = $_COOKIE['lastvisit'];
$publish_date = get_post_time( 'U', true, $id );
if ($publish_date > $lastvisit) $title .= '<span class="new-article">New</span>';
return $title;
 
}

add_filter( 'the_title', 'wpb_lastvisit_the_title', 10, 2);
 
// Set the lastvisit cookie

function wpb_lastvisit_set_cookie() {

if ( is_admin() ) return;
$current = current_time( 'timestamp', 1);
setcookie( 'lastvisit', $current, time()+3600*24*30, COOKIEPATH, COOKIE_DOMAIN ); //Dura 30 giorni

}

add_action( 'init', 'wpb_lastvisit_set_cookie' );

CSS
Codice:
/* Formatta la parola "New" dei nuovi articoli */
.new-article {
    background: #feffdd;
    font-size: 1.2em;
    color: #ff0000;
    padding: 3px;
    margin-left: 10px;
    border: 1px solid #eeefd2;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border-radius: 5px;
}
 
Ultima modifica di un moderatore:
Sembra andare meglio. Voglio fare una prova: cosa scrivo se voglio farlo scadere dopo un minuto?
Poi, dove si memorizza il cookie? Ho guardato nei cookie di Safari che uso e nel db ma non lo trovo.
 
PHP:
strtotime( '+60 second' );

Non sparisce più anche se aggiorno la pagina.
PHP:
function wpb_lastvisit_set_cookie() {
if ( is_admin() ) return;
$current = current_time( 'timestamp', 1);
setcookie('lastvisit',$current, strtotime( '+5 seconds' ) ,'/');
}
 
Ultima modifica di un moderatore:
@Shyson
Quando posti codice PHP devi usare il TAG
php.png
non il tag
code.gif
Te lo ho corretto anche nel primo post sperando che capissi!
 

Discussioni simili