我有一个插件,一个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>
最合适的回答,由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
处理程序。