WordPress.org

Make WordPress Core


Ignore:
Timestamp:
03/26/2020 05:50:39 PM (2 months ago)
Author:
kadamwhite
Message:

REST API: Fix _fields filtering of registered rest fields.

Use rest_is_field_included when determining which additional fields to include to permit filtering by nested field properties.

Props Dudo, kadamwhite, TimothyBlynJacobs.
Fixes #49648.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api.php

    r47224 r47511  
    555555                'd' => array(
    556556                    '5' => 5,
     557                ),
     558            ),
     559            $response->get_data()
     560        );
     561    }
     562
     563    /**
     564     * Ensure inclusion of deeply nested fields may be controlled with request['_fields'].
     565     *
     566     * @ticket 49648
     567     */
     568    public function test_rest_filter_response_fields_deeply_nested_field_filter() {
     569        $response = new WP_REST_Response();
     570
     571        $response->set_data(
     572            array(
     573                'field' => array(
     574                    'a' => array(
     575                        'i'  => 'value i',
     576                        'ii' => 'value ii',
     577                    ),
     578                    'b' => array(
     579                        'iii' => 'value iii',
     580                        'iv'  => 'value iv',
     581                    ),
     582                ),
     583            )
     584        );
     585        $request = array(
     586            '_fields' => 'field.a.i,field.b.iv',
     587        );
     588
     589        $response = rest_filter_response_fields( $response, null, $request );
     590        $this->assertEquals(
     591            array(
     592                'field' => array(
     593                    'a' => array(
     594                        'i' => 'value i',
     595                    ),
     596                    'b' => array(
     597                        'iv' => 'value iv',
     598                    ),
    557599                ),
    558600            ),
Note: See TracChangeset for help on using the changeset viewer.