Bonjour je rencontre un soucis lors de la création d'un "petit" plugin permettant d'ajouter sur la page des auteurs un bouton de vote, j'ai suivi, pour ce faire, ce tuto Creating a Plugin to Add Votes to Your WordPress Comments Using AJAX avec une seule différence, puisque je ne suis pas dans une boucle, je n'ai pas fait appel au hook de wordpress, me contentant d'appeler la fonction sur ma page auteur.
mon code php:
<?php
/**
Plugin Name: WP-VoteMe
Description: déf.
Version: 1.0
**/
define('VOTEMESURL', WP_PLUGIN_URL."/".dirname( plugin_basename( __FILE__ ) ) );
define('VOTEMEPATH', WP_PLUGIN_DIR."/".dirname( plugin_basename( __FILE__ ) ) );
function voteme_enqueuescripts() {
wp_enqueue_script('voteme', VOTEMESURL.'/js/voteme.js', array('jquery'));
wp_localize_script('voteme', 'votemeajax', array('ajaxurl' => admin_url('admin-ajax.php')));
}
add_action('wp_enqueue_scripts', voteme_enqueuescripts);
function voteme_addlink() {
global $wp_query;
$curauth = $wp_query->get_queried_object();
$authorID = $curauth->ID;
$votemelink = "";
$nonce = wp_create_nonce("voteme_nonce");
$votes = get_usermeta($authorID, '_votemecount', true) != '' ? get_usermeta($authorID, '_votemecount', true) : '0';
$arguments = $authorID.",'".$nonce."'";
$link = $votes.' <a onclick="votemeadd('.$arguments.');">'.'Votes'.'</a>';
$votemelink = '<div id="voteme-'.$authorID.'">';
$votemelink .= '<span>'.$link.'</span>';
$votemelink .= '</div>';
echo $votemelink;
}
function voteme_ajaxhandler() {
if ( !wp_verify_nonce( $_POST'nonce'], "voteme_nonce")) {
die("cette action n'est pas permise !");
}
$results = '';
global $wpdb;
$authorid = $_POST'authorid'];
$votecount = get_usermeta($authorid, '_votemecount', true) != '' ? get_usermeta($authorid, '_votemecount', true) : '0';
$votecountNew = $votecount + 1;
update_usermeta($authorid, '_votemecount', $votecountNew);
$results.='<div class="votescore">'.$votecountNew.'</div>';
die($results);
}
add_action( 'wp_ajax_nopriv_voteme_ajaxhandler', 'voteme_ajaxhandler' );
add_action( 'wp_ajax_voteme_ajaxhandler', 'voteme_ajaxhandler' );
mon script ajax :
function votemeadd(author_id,nonce) {
$.ajax({
type: "POST",
url: votemeajax.ajaxurl,
data: {
action: 'voteme_ajaxhandler',
authorid: author_id,
nonce:nonce
},
success:function(data, textStatus, XMLHttpRequest){
var linkofvote = '#voteme-' + author_id;
$(linkofvote).html('');
$(linkofvote).append(data);
},
error: function(MLHttpRequest, textStatus, errorThrown){
alert(errorThrown);
}
});
}
J'appel ma fonction "voteme_addlink()" sur ma page author en plaçant mon code php comme suite
<?php voteMe_addlink(); ?>
Mon soucis est que mon plugin fonctionne parfaitement tant que je suis connecté, hors je souhaite qu'il fonctionne aussi avec des utilisateurs non-authentifiée.
Si vous avez une piste, franchement, je suis preneur, j'ai beau chercher sur internet, je ne trouve rien, en tout cas rien qui me mette sur une piste.
D'avance, merci pour votre aide.