Verifique se o usuário já visitou este post hoje

4

Eu tenho um pedaço de código que mede uma popularidade pós. Como eu iria verificar se o usuário já não visitou este post nas últimas 24 horas? Preciso definir um cookie para o usuário e para cada postagem que eles visitaram? Eu

$count = get_post_meta($post_id, 'popular_posts', true);
    if(user-didnt-visited-this-page-in-last-24-hours) : 
       $count++;
       update_post_meta($post_id, $count_key, $count);
    endif; 
    
por Boris Kozarac 28.05.2016 / 19:03

1 resposta

2

Nota! Este código não foi testado!

<?php
function my_visitor_cookie($post_id) {

    if ( empty($post_id) ) {
        global $post;
        $post_id = $post->ID;    
    }

    // get post meta
    $count = get_post_meta($post_id, 'unique_post_visits', true);

    // if there was no meta value
    if( empty($count) ) {
        $count = 0;
    }

    // check if cookie was already set (cookie name for the current post)
    if( !isset($_COOKIE['my_visitor_' . $post_id]) ) {
        // set visitor cookie if it is not set already
        setcookie(
            'my_visitor_' . $post_id, // cookie name for the current post
            $post_id, // any value, shot in the dark
            DAY_IN_SECONDS // WordPress time constant
        );
        // increase count
        $count++;
        // update count
        update_post_meta($post_id, 'unique_post_visits', $count);
    }
}

// add_action('wp_head', 'my_visitor_cookie');
add_action('init', 'my_visitor_cookie'); // updated according to the comments
    
por Max Yudin 28.05.2016 / 20:51