Ce tutoriel simple vous apprend à créer un compteur de votes en utilisant les métadonnées de la publication.
J'aimerais savoir comment ajouter des votes à la baisse à ce petit script (par exemple -1, -2). De la manière suivante: Si le message a 0 vote et qu'il obtient un vote négatif, il se termine par -1. Si le message a 1 vote et qu'il a été voté par défaut, il se termine par 0 (un seul compteur).
la partie jQuery:
<?php wp_enqueue_script( 'jquery' ) ?>
<?php wp_head(); ?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(".vote a").click(
function() {
var some = jQuery(this);
var thepost = jQuery(this).attr("post");
var theuser = jQuery(this).attr("user");
jQuery.post("<?php bloginfo('template_url'); ?>/vote.php", {
user: theuser,
post: thepost
}, function(data) {
var votebox = ".vote" + thepost + " span";
jQuery(votebox).text(data);
jQuery(some).replaceWith('<span class="voted">Voted</span>');
});
});
});
</script>
Lorsqu'un membre clique sur le lien de vote, le code ci-dessus obtient l'ID de publication et l'ID utilisateur du membre et l'envoie à un fichier appelé vote.php à l'aide d'une méthode de publication. Le fichier vote.php effectuera tout ce dont nous avons besoin pour ajouter le vote.
vote.php:
<?php
$file = dirname(__FILE__);
$file = substr($file, 0, stripos($file, "wp-content") );
require( $file . "/wp-load.php");
$currentvotes = get_post_meta($_POST['post'], 'votes', true);
$currentvotes = $currentvotes + 1;
$voters = get_post_meta($_POST['post'], 'thevoters', true);
if(!$voters) $voters = $_POST['user']; else $voters = $voters.",".$_POST['user'];
update_post_meta($_POST['post'], 'votes', $currentvotes);
update_post_meta($_POST['post'], 'thevoters', $voters);
echo $currentvotes;
?>
Une fois les informations publiées sur vote.php, deux champs personnalisés sont créés. Un pour compter le vote et un pour ajouter l'électeur à une liste afin qu'il ne puisse plus voter.
functions.php:
// voting function
function voting($id) {
global $user_ID;
$currentvotes = get_post_meta($id, 'votes', true);
$voters = get_post_meta($id, 'thevoters', true);
$voters = explode(",", $voters);
foreach($voters as $voter) {
if($voter == $user_ID) $alreadyVoted = true;
}
if(!$currentvotes) $currentvotes = 0;
echo '<div class="vote vote'.$id.'"><span>'.$currentvotes.'</span>';
if($user_ID && !$alreadyVoted) echo '<br /><a post="'.$id.'" user="'.$user_ID.'">'.__("Vote").'</a>';
if($user_ID && $alreadyVoted) echo '<br /><span class="voted">'.__("Voted").'</span>';
echo '</div>';
if(!$user_ID) echo '<div class="signup"><p><a href="'.get_bloginfo('url').'/wp-login.php?action=register">'.__('Register').'</a> '.__('to vote').'.</p></div>';
}
aucune suggestion?
Vous devrez créer un deuxième bouton pour voter à la baisse. Donner au bouton upvote une classe de haut et le bouton de vote bas une classe de bas.
jQuery
<?php wp_enqueue_script( 'jquery' ) ?>
<?php wp_head(); ?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(".vote a.up").click(
function() {
var some = jQuery(this);
var thepost = jQuery(this).attr("post");
var theuser = jQuery(this).attr("user");
jQuery.post("<?php bloginfo('template_url'); ?>/vote.php", {
user: theuser,
post: thepost,
updown: 'up'
}, function(data) {
var votebox = ".vote" + thepost + " span";
jQuery(votebox).text(data);
jQuery(some).replaceWith('<span class="voted">Voted</span>');
});
});
jQuery(".vote a.down").click(
function() {
var some = jQuery(this);
var thepost = jQuery(this).attr("post");
var theuser = jQuery(this).attr("user");
jQuery.post("<?php bloginfo('template_url'); ?>/vote.php", {
user: theuser,
post: thepost,
updown: 'down'
}, function(data) {
var votebox = ".vote" + thepost + " span";
jQuery(votebox).text(data);
jQuery(some).replaceWith('<span class="voted">Voted</span>');
});
});
});
</script>
vote.php
<?php
$file = dirname(__FILE__);
$file = substr($file, 0, stripos($file, "wp-content") );
require( $file . "/wp-load.php");
$currentvotes = get_post_meta($_POST['post'], 'votes', true);
if("up" == $_POST['updown']) {
$currentvotes ++;
} elseif("down" == $_POST['updown']) {
$currentvotes --;
}
$voters = get_post_meta($_POST['post'], 'thevoters', true);
if(!$voters) $voters = $_POST['user']; else $voters = $voters.",".$_POST['user'];
update_post_meta($_POST['post'], 'votes', $currentvotes);
update_post_meta($_POST['post'], 'thevoters', $voters);
echo $currentvotes;
?>
C'est tout ce que vous devriez avoir besoin d'éditer