web-dev-qa-db-ja.com

ユーザーが最後にアクセスしてからページに表示されていないコメントの数を表示します

コミュニティは非公開で、複数のページ/ wordpress/design/etcがあります。ユーザーがこれらのページにアクセスしたときにできることは、コメントすることだけです。

今、私がやろうとしていること、可能であればIdk、それがそうであれば私はあまりにも検索のためのいくつかの指示/ヒントが必要です。

http://jsfiddle.net/melbourne/uPqBe/4/

タイトルのように表示したい数字の代わりに、現在のユーザーがこれらのページを訪問してからの最新のコメントの数。

私はlocalStorage/cookiesを使うことを考えました、しかしもしユーザーがどこか他の場所からログインすることを決心したならば、それは仕事をしないでしょう、言い換えれば私はここからどこへ行くべきかについて手がかりがない。

任意の提案は本当に感謝されるでしょう。

1
Strasbourg

データをpost-id - >前回の訪問時のコメント数の配列としてユーザーmetaに格納し、その日以降のコメントを単純に数えることができます。

function get_user_comment_count_since_last_visit($user_id ,$post_id){
    //only do this for logged in users
    if ($user_id <= 0 ){
        return 0;
    }

    /**
     * get last comment count for a post id from user meta if set
     * and if not set then we define zero
     */
    $user_last_visit = get_user_meta( $user_id,'_last_visit_',true);
    if (!isset($user_last_visit[$post_id]) || $user_last_visit[$post_id] < 0)
        $user_last_visit[$post_id] = 0;

    /**
     * get current comment count of the post
     */
    $comments_count = wp_count_comments( $post_id);

    /**
     * get the amount of added comment since last visit
     * and update the user meta for next visit
     */
    $user_last_visit[$post_id] = $comments_count->approved -  $user_last_visit[$post_id];
    update_user_meta( $user_id, '_last_visit_',  $user_last_visit);
    return $user_last_visit[$post_id];
}

それを使用するには、現在ログインしているユーザーのページIDとユーザーIDを使用して呼び出します。

2
Bainternet