插件接受帖子的最佳方式是什么?

时间:2015-02-14 作者:Dan

问题:我正在开发一个插件,它需要接受POST数据(来自外部源的webhooks)。我无法控制发布数据的格式。我传递自己数据的唯一选项是通过注册webhook时传递的URL参数。

到目前为止,我已经想出了3个想法,其中没有一个看起来很理想,但其中两个肯定会奏效(我认为#2不可能奏效……)。我希望有一个干净的方法来实现这一点,而不会对WordPress进行太严重的黑客攻击。

将webhook指向WP主页,然后在我的插件中侦听帖子(基于webhook中包含的一些任意URL参数)。我的问题是,仅仅为了接收帖子而生成一个完整的WordPress页面的开销要比需要的开销大得多。

在我的研究过程中,我发现了XML-RPC,它看起来很有前途,直到我发现它依赖于包含调用信息的帖子正文。显然这行不通。是否有我遗漏的解决方法,或者这是一条死胡同?

直接发布到插件内的URL。然后需要手动引导WP。通常不理想。。。

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

一种选择是使用add_rewrite_endpoint technique 我在评论中提到。

另一种选择是使用admin_post_{action}

例如,您可以使用action 获取参数:

http://www.example.com/wp-admin/admin-post.php?action=my_plugin_action

然后通过admin_post_nopriv_my_plugin_action 要接收该请求并处理数据,请执行以下操作:

function wpd_my_plugin_action() {
    status_header(200);
    // do stuff
    echo $_POST[\'somedata\'];
    die;
}
add_action( \'admin_post_nopriv_my_plugin_action\', \'wpd_my_plugin_action\' );
这两个选项都在不运行主查询和加载模板的情况下加载WordPress。

编辑:要允许传入帖子,您必须钩住allowed_http_originallowed_http_origins (此过滤器仅在海报设置时工作HTTP_ORIGIN), 否则WordPress会在请求到达您的操作之前抛出请求。

结束

相关推荐

Wp.getUser XML-RPC方法仅返回50个用户,如何获取所有用户

在我的iphone应用程序中,我试图列出所有使用wp.getUsers XML-RPC method, 但它并没有返回所有用户,在那个博客中我有大约180个成员,但它只返回了50 users 在列表中,如何获取所有用户??我正在传递以下3个参数blog_id, username 和password ,,我应该通过吗any other parameter 要获取列表中的所有用户??普拉斯提前帮我解决问题