如何在插件的选项页面上运行功能?

时间:2013-09-03 作者:biggles

我正在编写一个插件,通过HTTP/SOAP将来自第三方服务的数据同步到wordpress中的自定义帖子类型。可以选择在某个时间间隔运行它(使用wP\\u cron函数),但我还想包括一个“同步”按钮,以便能够手动拉入或更新数据,而无需等待cron下次运行。

我有一个使用Wordpress设置API的插件页面设置选项页面,它工作得很好。

理想情况下,这就是我希望发生的事情:

  1. 单击“立即同步”按钮后,将运行主插件php文件中的php函数(连接到第三方服务并同步数据)
  2. ,它返回有关同步内容的信息此信息显示在警报框或某种面板中,以让用户了解同步内容以及是否出现任何错误

    以下是我尝试过的一些事情:

    • 同步功能本身就可以工作。我在设置表单中添加了一个名为“立即同步”的临时复选框,并在注册特定设置时调用了更新函数作为回调(register_setting()), 但无论复选框的值如何,它都将运行此函数。

      register_setting( \'my_plugin_settings\', \'sync_now_option\', \'syncNowFunction\');

      通过浏览器中的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()

      我还尝试使用Ajax直接从主插件文件加载函数,但没有成功

    我真的不介意页面是否被重新加载,但我不希望用户在之后被重定向到另一个页面。

    我如何才能做到这一点?

1 个回复
SO网友:kaiser

只需为您的插件注册一个额外的子管理员页面More info here。然后执行wp_remote_request() 获取数据。循环浏览结果,以某种视图显示给最终用户,例如WP_List_Table 并保存您的帖子类型。将管理子菜单项命名为“更新”,您就完成了。

如果确实需要实现另一个更新按钮,请使用与get_submit_button() - 本机WP admin按钮-使用并将其添加到链接到子管理员页面的锚/链接。这也将用户反馈(视图)从页面的其余部分分离出来,让你的插件更加闪亮,与WP核心管理风格保持一致,总的来说,让你的插件看起来更大,更好地分离关注点。

提示:单击此答案中的所有链接,因为我链接到了前面解释详细信息的答案。

结束

相关推荐