我有一个函数,它发送当前事件的私人消息以进行邀请,这是一个CPT。现在我想显示发送的邀请总数。我正在使用BuddyPress btw。这是代码:
function invite_friend_to_event(){
$message = 'Check out this event! <br><a href="'.$_POST['event_url'].'">'.$_POST['event_title'].'</a>';
$msg_args = array(
'sender_id' => get_current_user_id(), // 1 = admin
'recipients' => $_POST["user_id"],
'subject' => 'Event invitation!',
'content' => $message
);
$thread_id = messages_new_message($msg_args);
echo "Invitation sent!";
die();
}
add_action('wp_ajax_invite_friend', 'invite_friend_to_event');
add_action( 'wp_ajax_nopriv_invite_friend', 'invite_friend_to_event' );
我的前端模板:
<div class="event invite-friends">
<script>
function invite_friends(userid){
jQuery.ajax({
url:"<?php echo admin_url('admin-ajax.php'); ?>",
type:'POST',
data: {
action : 'invite_friend',
user_id : userid,
event_url : '<?php the_permalink();?>',
event_title : '<?php echo $event->get_title(); ?>'
},
dataType : 'html',
success:function(results)
{
alert(results);
}
});
}
</script>
<h4 class="small">Invite Friends</h4>
<?php
$uid = get_current_user_id();
$friends_list = friends_get_friend_user_ids( $uid, false, true );
foreach($friends_list as $friend):
$friend_obj = get_userdata($friend['user_id']);
?>
<div class="invitee">
<span class="small"><?php echo $friend_obj->first_name." ".$friend_obj->last_name; ?></span>
<?php echo get_avatar( $friend['user_id'], 64 ); ?>
<button class='btn-success btn' onclick="invite_friends('<?php echo $friend['user_id']; ?>');">
<span class='small white'>Invite</span></button>
</div>
<?php endforeach; ?>
</div>
当您向admin-ajax.php
发布ajax时,该脚本(除了目前正在做的事情,即发送邀请)可能会在某个地方增加数据库中的计数器。
如果您想在每次邀请后使用新的递增计数,那么只需将其作为ajax响应的一部分返回,然后在页面上的某个位置显示即可。如果您不关心这一点,那么您可以在下次重新加载php页面时从数据库中获取邀请计数。