它返回一个0
因为AJAX处理程序只用于登录的请求,并且没有注册非\\u priv处理程序。0
是最后的退路。
尝试#1
虽然您可以注册自己的AJAX处理程序来调用生成PDF的函数并将其放入迷你插件中,但还有一种选择:
add_action("wp_ajax_no_priv_wcpn_export", function() {
do_action( "wp_ajax_wcpn_export" );
} );
另一端的代码可能不是这样的,因为它可能依赖于正在登录的用户,或者可能不检查,无论哪种方式,当请求注销时,这都会触发该AJAX的登录处理程序。一个简单的解决方法。
这将导致下一个问题:
https://github.com/postnl/woocommerce/blob/master/includes/admin/class-wcpn-export.php#L232-L254
PostNL会执行许多检查,包括您是否已登录、nonce是否有效、登录用户是否具有适当的访问权限等。
尝试#2
让我们使用继承!让我们创建一个新类,调用它
Martin_Export
:
class Martin_Export extends WPCN_Export {
...
}
我们班将做2件事,而且只做2件事。
首先,它将有一个全新的export
作用我们将复制粘贴WCPN中的一个,并删除顶部的检查。我们不会复制粘贴任何其他内容,只是export
作用
其次,我建议添加一个新的安全性检查,比如说一个密码参数,其值只有PHP文件知道。E、 g。if ( $_GET[\'foo\'] !== \'bar\' ) { wp_die(\'get outta here\'); }
然后,我们在类后面或其他地方的末尾有一行代码,用于钩住新版本的export
进入admin-ajax.php
对于这样的已注销用户:
$martin_export = new Martin_Export();
add_action("wp_ajax_no_priv_wcpn_export", [ $martin_export, \'export\' ] );
现在,当您发出AJAX请求但未登录时,它将运行您稍微调整过的版本。只需记住添加我们添加到PHP脚本中的秘密参数