我建议考虑几件事:
- 每个帖子都应显示赞成票和反对票的总和
- 每个用户只能投赞成票或反对票一次(即,一个用户不能对同一个帖子投票一百次)
您认为您希望为您的主题创建一个功能,该功能允许用户在登录时更改帖子的元数据。然而,实际情况并非如此——您需要做的是允许用户编辑他们自己的元数据的一个元素(参见add_user_meta),该元素基本上只是一个散列。元数据可能类似于array("post-666-vote" => -1, "post-777-vote" => 1)
对 666 后的投票和对 777 后的投票。
因此,在加载每个帖子时,您的 vote-tally-renderer 将如下所示:
vote = get_post_meta($user_id, "post-" . $post_id . "-vote", true);
if(vote == -1) {
// Render down-arrow voting
} elsif(vote == 1) {
// Render up-arrow voting
} else {
// Render normal arrows
}
每个箭头可能都必须发出 AJAX 请求来更新帖子的元数据。这是一个很长的教程(但它不是超级复杂!我保证!),大约 3/4 的内容讨论了如何使用 AJAX 请求来修改某些用户的元数据。http://wp.tutsplus.com/tutorials/plugins/a-primer-on-ajax-in-the-wordpress-frontend-actually-doing-it/
唯一真正的重大变化是 WP AJAX 请求调用的 PHP 函数还需要一个回调函数来更新帖子的元数据,并更改帖子本身的投票数。这样,当页面重新加载时,它将显示正确的投票数。