WordPress发布投票-在整个网站上按IP投票一次

时间:2012-07-19 作者:Thad Bloom

我已经对此进行了几天的研究,发现了许多投票插件——不幸的是,没有一个插件能完全满足我的需要,所以我正在尝试破解一些通过在线搜索找到的函数/脚本。

我现在正在使用此脚本: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);
}

2 个回复
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 );

SO网友:Thad Bloom

最后,我对整个post\\u meta表进行了直接SQL查询,如果数据库中已经记录了IP地址,则显示消息“已投票”:

$voter_ips = $_SERVER[\'REMOTE_ADDR\']; 
$result = mysql_query("SELECT * FROM  wp2_postmeta WHERE meta_value LIKE \'%$voter_ips%\' ");
$num_rows = mysql_num_rows($result);

if ($num_rows > 0){
          $vtext = "VOTED";
          $class = \' class="disabled"\';
} else {
$vtext = "VOTE";
$class = "";
}

结束

相关推荐

Migrating to Tumblr

我之所以成为Tumblr的忠实粉丝,有几个原因(极简主义、易于制作报价/照片/视频风格的帖子,以及我使用的移动设备的客户端),所以我决定在使用WordPress 7年后,无论是私人托管还是WordPress。com托管解决方案,是时候行动了。不幸的是,我不知道如何正确地做到这一点。互联网上的一些帖子建议从RSS提要导入,但这并不能完全解决问题-我的要求是:我保持相同的基本URL(通过使用DNS记录很简单)所有现有的帖子URL都可以工作,或者至少301重定向到新的URL(以尽量减少PageRank的损失)媒