Vogliamo fare in modo che ad ogni caricamento di pagina o refresh venga visualizzato un banner diverso. La serie di contenuti da mostrare non deve essere casuale ma deve essere ripetuta ciclicamente.

Nel blocco di codice utilizziamo un cookie il cui valore viene incrementato ad ogni visita. Quando il valore del cookie è uguale al numero di banner da mostrare viene resettato in modo da cominciare un nuovo ciclo.

Nell’esempio 'isw_banner' è un ipotetico custom post type.

La funzione isw_set_cookie() è registrato nell’action hook init, in questo modo viene lanciata prima che ci sia qualsiasi output html.

//functions.php
function isw_set_cookie() {

    // numero di banner pubblicati
    $n = wp_count_posts( 'isw_banner' )->publish;

    // se non stiamo visualizzando una pagina del backend
    if ( !is_admin() )
    {

        $valore = 0;

        if ( isset( $_COOKIE['isw_numero_banner'] ) )
        {
            // incrementiamo il suo valore di + 1
            if ( $_COOKIE['isw_numero_banner'] < $n )
                $valore = (int)$_COOKIE[ 'isw_numero_banner' ] + 1 ;

            // resettiamo a zero quando il numero di banner corrisponde o è maggiore al valore calcolato
            if ( $valore >= $n )
                $valore = 0;

        }

        setcookie( 'isw_numero_banner', $valore , time()+3600*24*100, COOKIEPATH, COOKIE_DOMAIN, false );

    }

}

add_action( 'init', 'isw_set_cookie');

 


  inStileWeb.com
blog comments powered by Disqus