web-dev-qa-db-fra.com

Vérifier si l'utilisateur a déjà visité ce post aujourd'hui

J'ai un morceau de code qui mesure une popularité de publication. Comment pourrais-je vérifier si l'utilisateur n'a pas déjà visité ce message depuis 24 heures? Dois-je créer un cookie pour l'utilisateur et pour chaque message visité? je

$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; 
4
Boris Kozarac

Remarque! Ce code n'a pas été testé!

<?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
2
Max Yudin