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ファイルにアクション フック (これについてはよくわかりません) と、現在の投票を取得する関数本体を追加し、現在の投票に 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 です。