从REST API中过滤出结果

时间:2018-03-11 作者:AVEbrahimi

我想构建一个插件,从RESTJSON输出中删除特定用户的所有帖子。如何添加filterhook 这样做?

3 个回复
最合适的回答,由SO网友:Alex Sancho 整理而成

如果您使用的是WP 4.7+,则可以使用rest_$type_querywp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:L267

这是一个按给定术语过滤当前查询的工作示例

    $types = [
        \'post\',
        \'page\',
    ];

    foreach ( $types as $type ) {
        add_filter( \'rest_\' . $type . \'_query\', \'filter_rest_query_by_zone\', 10, 2 );
    }

    function filter_rest_query_by_zone( $args, $request ) {
            $zones = [ \'term1\', \'term2\', \'term3\' ];

            $args[\'tax_query\'] = array(
                \'relation\' => \'AND\',
                array(
                    \'taxonomy\' => \'zones\',
                    \'field\'    => \'term_id\',
                    \'terms\'    => $zones
                )
            );

            return $args;
    }

SO网友:Mark Kaplun

开始觉得自己像鹦鹉一样,但又来了:(…如果您需要的结果与默认情况下API返回的结果不同,只需创建自己的终结点即可。core越是将这些API用于管理,以任何方式修改它们的风险就越大。

SO网友:Amal Ajith

Filtering posts based on multiple custom taxonomy terms based on logical "AND", "OR" condition in wordpress rest api.

以下是在新版本的Wordpress(v5及以上)中需要执行的操作

假设您有两个自定义分类法:部门和产品。

获取所有标记有分类ID 51的帖子”;或“或”;52属于税务术语;“部门”"E;或“或”;获取所有标记有分类ID 57的帖子”;和;58属于分类学术语;“提供”;

https://mywordpressbackend.com/wp-json/wp/v2/posts?sector=51+52&offering=57,58&tax_relation=OR
获取所有标记有分类ID 51的帖子”;或“或”;52属于税务术语;“部门”"E;和;获取所有标记有分类ID 57的帖子”;和;58属于分类学术语;“提供”;

https://mywordpressbackend.com/wp-json/wp/v2/posts?sector=51+52&offering=57,58&tax_relation=AN

结束

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。