web-dev-qa-db-ja.com

今日このユーザーがこの投稿をすでに訪問したかどうかを確認

投稿の人気度を測定するコードがあります。過去24時間にユーザーがこの投稿にアクセスしていないかどうかを確認するにはどうすればよいですか。ユーザーと訪問した投稿ごとにCookieを設定する必要がありますか?私

$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

注意!このコードはテストされていません。

<?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