我正在编写一个插件,通过HTTP/SOAP将来自第三方服务的数据同步到wordpress中的自定义帖子类型。可以选择在某个时间间隔运行它(使用wP\\u cron函数),但我还想包括一个“同步”按钮,以便能够手动拉入或更新数据,而无需等待cron下次运行。
我有一个使用Wordpress设置API的插件页面设置选项页面,它工作得很好。
理想情况下,这就是我希望发生的事情:
- 单击“立即同步”按钮后,将运行主插件php文件中的php函数(连接到第三方服务并同步数据)
- ,它返回有关同步内容的信息此信息显示在警报框或某种面板中,以让用户了解同步内容以及是否出现任何错误由于某种原因,我无法理解这应该如何工作。
以下是我尝试过的一些事情:
- 同步功能本身就可以工作。我在设置表单中添加了一个名为“立即同步”的临时复选框,并在注册特定设置时调用了更新函数作为回调(
register_setting()
), 但无论复选框的值如何,它都将运行此函数。register_setting( \'my_plugin_settings\', \'sync_now_option\', \'syncNowFunction\');
当我有一个单独的表单,而不是由页面上的设置API生成的表单,该表单只有一个按钮,可以调用另一个php文件(不是主插件php文件),我得到一个500错误。如果存在任何类型的错误,似乎会抛出500错误。(找不到包含文件,找不到函数。)除了vanilla php,我不能使用任何东西,否则它会抛出500错误。我尝试了几种不同的方式调用该文件,但都得到了相同的结果:通过浏览器中的URL访问表单,表单的操作指向该URL<form method="GET" action="http://url.com/wp-content/plugins/my-plugin/sync.php">
<input type="submit" value="Sync Now" />
`
使用jQuery的.load()
和ajax()
不管问题是什么,它都会抛出500个错误,这似乎很奇怪。
我还尝试使用Ajax直接从主插件文件加载函数,但没有成功
我真的不介意页面是否被重新加载,但我不希望用户在之后被重定向到另一个页面。我如何才能做到这一点?