我已经对此进行了几天的研究,发现了许多投票插件——不幸的是,没有一个插件能完全满足我的需要,所以我正在尝试破解一些通过在线搜索找到的函数/脚本。
我现在正在使用此脚本:http://bavotasan.com/2011/a-better-voting-system-for-wordpress/
我正试图找到一种方法,只允许IP在网站上投票一次。基本上,如果他们在一个职位上投票,他们就不能在另一个职位上投票。
这个帖子和这个帖子很相似,Wordpress Vote Plugin - Vote Once and Track User
add_action("wp_ajax_add_votes_options", "add_votes_options");
add_action("wp_ajax_nopriv_add_votes_options", "add_votes_options");
function add_votes_options() {
if (!wp_verify_nonce($_POST[\'nonce\'], \'voting_nonce\'))
return;
$postid = $_POST[\'postid\'];
$ip = $_POST[\'ip\'];
//$voter_ips = get_post_meta($postid, "voter_ips", true);
// use an option instead
$voter_ips = get_option( "wpse_59080_voter_ips", true );
if(!empty($voter_ips) && in_array($ip, $voter_ips)) {
echo "null";
die(0);
} else {
$voter_ips[] = $ip;
// update_post_meta($postid, "voter_ips", $voter_ips);
update_option( "wpse_59080_voter_ips", $voter_ips );
}
//$current_votes = get_post_meta($postid, "votes", true);
$current_votes = get_option( "wpse_59080_voter_ips", true );
$new_votes = intval($current_votes) + 1;
// update_post_meta($postid, "votes", $new_votes);
// use an option instead
update_option( "wpse_59080_voter_ips", $voter_ips );
$return = $new_votes>1 ? $new_votes." votes" : $new_votes." vote";
echo $return;
die(0);
}
SO网友:fuxia
您需要的唯一区别是存储IP地址的位置。使用选项代替post meta。
剧本上说…
$voter_ips = get_post_meta($postid, "voter_ips", true);
…使用…
$voter_ips = get_option( "wpse_59080_voter_ips", true );
…如果更新了post meta,则应更新选项:
update_option( "wpse_59080_voter_ips", $voter_ips );