如何将WordPress随机数添加到AJAX请求

时间:2017-12-06 作者:David Sword

我有一个插件,一个cron作业运行refresh_my_plugin() 每日的

我需要在插件设置/选项页面上有一个按钮,允许用户手动运行所述功能,我希望它与ajax内联。

我有以下内容,应该可以使用,但我如何向其中添加Wordpress nonce呢?

<?php 
    if (isset($_POST[\'refresh_my_plugin\'])) {
        refresh_my_plugin();
    }

    function refresh_my_plugin() {
        // main function, runs daily with cron
        return true;
    }
?>

<button id=\'refresh\'>Refresh My Plugin</button>

<script>
    jQuery(\'#refresh\').click(function(){
        $.ajax({
            type: \'post\',
            data: { "refresh_my_plugin": "now"},
            success: function(response) { 
                jQuery(\'#refresh\').text("Successfully Refreshed!");
            },
            error: function(response) { 
                jQuery(\'#refresh\').text("...error!");
            },
        });
    });
</script>

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

我想出来了。简单地说,在我的请求中data, 我补充道

"nonce" : "<?php echo wp_create_nonce( \'refresh_my_plugin\' ); ?>"
然后进行验证

if (isset($_POST[\'refresh_my_plugin\']))
    if ( wp_verify_nonce( $_POST[\'nonce\'], \'refresh_my_plugin\' ) )
        refresh_my_plugin();
使用不正确的wp_verify_nonce, 相反,我得到了一个403,它反映在按钮上error 处理程序。

结束

相关推荐

插件中的Singleton在AJAX调用中失败(插件再次初始化)

我正在使用Wordboot starters plugin 创建我自己的插件。此插件使用PHPsingleton 方法来防止多个插件初始化。现在,当访问者发送联系表时Javascript XHR AJAX 执行调用以处理联系请求。一切正常,但我注意到singleton没有正常工作,因为对于每个AJAX请求,插件都在执行__construct 主要的Wordboot 班这意味着每次执行这样的请求时,整个插件都会再次初始化!我用了Wordpress REST API 和往常一样wp_ajax 用于执行AJAX