允许访客使用AJAX更新自定义帖子

时间:2016-01-28 作者:Al Rosado

我有一个简单的使用ajax的点击计数器,唯一的问题是,如果您没有登录,就无法更新帖子的计数器元框。

在我的例子中,这篇文章是一则广告,点击后会触发ajax功能。

是否可以允许guest使用ajax在前端更新post-meta?

更新时间:

这是jQuery脚本:

<script>
jQuery(document).ready( function() {
    jQuery(\'.ad.<?php echo $post->ID; ?>\').click(function() { 
        jQuery(\'#<?php echo $post->ID; ?>\').submit();
    });
    jQuery(\'#<?php echo $post->ID; ?>\').submit(function(e) {
        e.preventDefault();
        jQuery.ajax({
            type: "POST",
            url: ajaxurl,
            data: "action=adClickCounter&id="+<?php echo $post->ID?>,  
            success: function() {
                window.setTimeout(function(){
                window.location.href = "http://www.example.com/";
                }, 50);
            }
        });
    });
});
</script>
这是我的点击计数器功能:

function adClickCounter_ajax() {

$post_id = $_POST[\'id\'];
$adClickCount = get_post_meta($post_id, \'_adClickCount\', true);
$adClickCount = $adClickCount + 1;
update_post_meta($post_id,\'_adClickCount\',$adClickCount);
die($adClickCount);
}

add_action(\'wp_ajax_adClickCounter\', \'adClickCounter_ajax\');

1 个回复
最合适的回答,由SO网友:Milo 整理而成

There are two hooks for adding AJAX handlers, 对于未登录的访问者,您缺少一个。您需要:

add_action( \'wp_ajax_nopriv_adClickCounter\', \'adClickCounter_ajax\' );
。。。除了add_action 您当前拥有的通话。注意额外的nopriv_ 在标记中。

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i