我正在尝试为我的 Wordpress 博客创建一个投票系统,但我编写的代码不会更新为投票创建的元数据字段,并且每次我调用函数添加投票时,我都会返回值 1,
这是我写的代码:
首先在帖子的 html 部分,我创建了一个通过 javascript调用loadurl()的链接:
<a onclick="loadurl()" class='voteup' title="به این پست یه امتیاز"><i class="icon-angle-up"></i></a>
loadurl()调用的脚本如下,它使用 ajax从functions.php文件中调用call_me()函数
function loadurl() {
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
var value = $.ajax({
type: "POST",
url: ajaxurl,
data:{
//the call_me function for adding a vote in the functions.php
action: 'call_me'
}
})
.fail(function(r,status,jqXHR) {
console.log('failed');
})
.done(function(r,status,jqXHR) {
console.log('success');
//r is the return value of the function call_me();
console.log(r);
});
}
最后在functions.php文件中我添加了一个动作钩子(我不太确定)和应该获得currentvotes的函数体,在给当前投票加1后将其更新为新投票数数:
<?php
add_action('wp_ajax_noPriv_call_me', 'call_me');
add_action('wp_ajax_call_me', 'call_me');
add_action('save_post', 'call_me');
function call_me() {
global $wpdb;
$currentvotes = get_post_meta($_POST['post'], 'votes', true);
$currentvotes = $currentvotes + 1;
update_post_meta($_POST['post'], 'votes', $currentvotes);
echo $currentvotes;
die();
}
?>
但是 loadurl() 函数中 console.log(r) 函数输出的 currentvotes 值始终为 1,