防止插件侵入wp-json POST API

时间:2019-03-22 作者:dizzwave

我们使用一个名为“最近的帖子小部件扩展”(RPWE)的插件,很好地格式化了公司支持网站(WordPress,自然)上的帖子分类列表。它工作得很好,但更重要的是,在这一点上,它需要做太多的工作。

我最近开始实现一个第三方工具,它调用WP-API来根据(字符串)搜索词搜索帖子。查询如下所示:https://example.com/wp-json/wp/v2/posts?search=asdf结果应该是一个不错的帖子json数组。

然而(这是奇怪的部分)。。。不知何故,RPWE正在阻挠并将一大块CSS输出到结果中,就在顶部。由于调用方只需要json,因此它破坏了我们的集成。为什么在调用REST引擎的过程中会调用插件代码?

我试着在RPWE插件代码中玩了玩——我看到了它插入CSS的确切行,并且我添加了一些“如果”逻辑,仅当存在某个短代码属性时才输出CSS。结果很奇怪:如果我在加载带有RPWE的WP页面之后直接调用API,它仍然会失败(就像RPWE记得从UI加载一样)。(我还试着去掉插入CSS的那一行。这就解决了API问题,但我们网站上实际使用插件的样式就消失了。)

我是否遗漏了一些明显的东西?我不是WP专家(C#和javascript是我的专长),所以也许我需要了解一些设置?谜团#1是,为什么要在纯REST调用中调用此插件代码?

非常感谢!!

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

基本上,您希望在通过API发出请求时禁用RPWE小部件。我还没有测试过,但这可能有用:

 add_action (\'widgets_init\', \'wpse332374_remove_rpwe\', 0, 1000) // make sure this is the last action
 function wpse332374_remove_rpwe() {
   if (is_rest()) unregister_widget (\'recent_post_widget_extended\'); // or whatever the handle is
   }
请注意is_rest() 不是标准WP函数。这是一个solution 提出了另一个关于API调用的选择性功能的问题。

相关推荐

无法通过REST API获取尚未创建任何帖子的用户的信息

我无法从REST API获取用户信息。用户尚未创建任何帖子。我已经安装了基本的身份验证插件。每当我尝试获取用户信息时,都会出现以下错误。请求:https://example.com/wp-json/wp/v2/users/6{ \"code\": \"rest_user_cannot_view\", \"message\": \"Sorry, you are not allowed to list users.\", \"data\": {