Dans le JS l’action doit renvoyer vers la fonction qu’on active.
document.addEventListener("DOMContentLoaded", function () {
if (typeof mnky_ajax === "undefined") {
console.error("Erreur: mnky_ajax n'est pas défini !");
return;
}
// Utilisation de event delegation pour s'assurer que l'événement est attaché une seule fois
document.body.addEventListener("click", function (event) {
if (event.target && event.target.matches(".mnky-like-btn")) {
let postId = event.target.getAttribute("data-post-id");
fetch(mnky_ajax.ajax_url, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
body: new URLSearchParams({
action: "increment_like",
post_id: postId,
}),
})
.then(response => response.json()) // Convertir la réponse en JSON
.then(data => {
if (data.success && data.data && data.data.new_count !== undefined) {
event.target.querySelector('span').innerHTML = `${data.data.new_count}`;
}
})
.catch(error => console.error("Erreur AJAX:", error));
}
});
});function mnky_increment_like() {
if (!isset($_POST['post_id'])) {
wp_send_json_error(['message' => 'Post ID manquant']);
wp_die();
}
$post_id = intval($_POST['post_id']);
// Vérifier si la méta existe déjà
$current_likes = get_post_meta($post_id, 'mnky_post_views_like', true);
if (!$current_likes || !is_numeric($current_likes)) {
$current_likes = 0; // Si la méta n'existe pas, initialiser à 0
}
// Incrémenter
$new_likes = $current_likes + 1;
// Mettre à jour la base de données
update_post_meta($post_id, 'mnky_post_views_like', $new_likes);
// Retourner la réponse au format JSON
$response = ['success' => true, 'new_count' => $new_likes];
wp_send_json_success($response);
wp_die();
}
add_action('wp_ajax_increment_like', 'mnky_increment_like');
add_action('wp_ajax_nopriv_increment_like', 'mnky_increment_like');
function mnky_enqueue_scripts() {
// Enregistrer main.js
wp_register_script('like-js', get_template_directory_uri() . '/js/like.js', ['jquery'], null, true);
// Injecter mnky_ajax après avoir enregistré le script
wp_localize_script('like-js', 'mnky_ajax', [
'ajax_url' => admin_url('admin-ajax.php'),
]);
// Charger main.js après l’injection de mnky_ajax
wp_enqueue_script('like-js');
}
add_action('wp_enqueue_scripts', 'mnky_enqueue_scripts');




