0
下面是簡單的發佈後評級系統的代碼(教程從這個網站TUTORIAL) - 它工作正常,但我需要改變一下。現在用戶投票後,他無法再爲$ timebeforevote(1440分鐘)投票。我想阻止所有帖子的用戶投票,而不僅僅是這一個。發佈評級系統功能
我認爲這個問題是功能與此代碼,查找用戶的IP在目前的職位元現場:
$meta_IP = get_post_meta($post_id, "voted_IP");
$voted_IP = $meta_IP[0];
返回$voted_IP
並與$ip = $_SERVER['REMOTE_ADDR'];
比較我試圖與查詢修改它(其中查詢查找所有職位元字段ip)所以它會搜索所有職位的IP,但它沒有工作。我試圖讓它工作2天,沒有任何工作。
發佈評分系統代碼:用於查詢發現,如果用戶已經投票,但問題是,經過$ timebeforerevote IP值保持在元場,所以我不能用它
$timebeforerevote = 1440;
add_action('wp_ajax_nopriv_post-like', 'post_like');
add_action('wp_ajax_post-like', 'post_like');
wp_enqueue_script('like_post', get_template_directory_uri().'/js/post-like.js', array('jquery'), '1.0', 1);
wp_localize_script('like_post', 'ajax_var', array(
'url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('ajax-nonce')
));
function post_like()
{
$nonce = $_POST['nonce'];
if (! wp_verify_nonce($nonce, 'ajax-nonce'))
die ('Busted!');
if(isset($_POST['post_like']))
{
$ip = $_SERVER['REMOTE_ADDR'];
$post_id = $_POST['post_id'];
$meta_IP = get_post_meta($post_id, "voted_IP");
$voted_IP = $meta_IP[0];
if(!is_array($voted_IP))
$voted_IP = array();
$meta_count = get_post_meta($post_id, "votes_count", true);
if(!hasAlreadyVoted($post_id))
{
$voted_IP[$ip] = time();
update_post_meta($post_id, "voted_IP", $voted_IP);
update_post_meta($post_id, "votes_count", ++$meta_count);
echo $meta_count;
}
else
echo "already";
}
exit;
}
function hasAlreadyVoted($post_id)
{
global $timebeforerevote;
$meta_IP = get_post_meta($post_id, "voted_IP");
$voted_IP = $meta_IP[0];
if(!is_array($voted_IP))
$voted_IP = array();
$ip = $_SERVER['REMOTE_ADDR'];
if(in_array($ip, array_keys($voted_IP)))
{
$time = $voted_IP[$ip];
$now = time();
if(round(($now - $time)/60) > $timebeforerevote)
return false;
return true;
}
return false;
}
function getPostLikeLink($post_id)
{
$themename = "twentyeleven";
$vote_count = get_post_meta($post_id, "votes_count", true);
$output = '<p class="post-like">';
if ($vote_count == 0)
$output .= '<span class="count">0<span class="glosow"><br>głosów w rankingu</span></span>';
else
$output .= '<span class="count">'.$vote_count.'<span class="glosow"><br>głosów w rankingu</span></span>';
if(hasAlreadyVoted($post_id))
$output .= '<span title="Już głosowałeś" class="qtip alreadyvoted"></span>';
else
$output .= '<a href="#" data-post_id="'.$post_id.'">
<span title="'.__('Głosuj', $themename).'"class="qtip like"></span></a>';
$output .= '</p>';
return $output;
}
繼承人代碼。我沒有更多的想法,現在...
$ip = $_SERVER['REMOTE_ADDR'];
$query = new WP_Query(array(
'ignore_sticky_posts' => true,
'meta_key' => 'voted_IP',
'meta_value' => $ip
));
if (0 !== $query->found_posts) {
//do something
}
_「我試圖查詢(如查詢查找IP在元領域的所有帖子)修改爲」 _這會朝着正確的方向前進。代碼在哪裏? – geomagas
添加到'做某事的一部分'的主要問題,我想顯示投票部分,如果只是如果查詢不找到用戶的IP地址元字段'voted_IP',但我意識到元字段不清除後$ timebeforerevote時間,所以我不能使用它。 – th3rion
$ voted_IP [$ ip] = time(); update_post_meta($ post_id,「voted_IP」,$ voted_IP);我認爲這一行。但我不知道ip如何作爲時間存儲。 – th3rion