Filter out results from REST API

If you’re using WP 4.7+ you can filter the query using the rest_$type_query hook wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:L267

This is a working example that filters current query by given terms

    $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;
    }

Leave a Comment