Make WordPress Core

Changeset 61324


Ignore:
Timestamp:
11/30/2025 11:24:38 AM (6 weeks ago)
Author:
johnbillion
Message:

Options, Meta APIs: Revert additional request validity handling that was added to the /wp/v2/settings REST API route. This change needs more work to account for URL query parameters used in place of body data.

This reverts [60357] and [60301].

See #41604

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php

    r60357 r61324  
    146146        $options = $this->get_registered_options();
    147147
    148         $params = array_diff_key( $request->get_params(), $request->get_query_params() );
    149 
    150         if ( empty( $params ) || ! empty( array_diff_key( $params, $options ) ) ) {
    151             $message = empty( $params )
    152                 ? __( 'Request body cannot be empty.' )
    153                 : __( 'Invalid parameter(s) provided.' );
    154 
    155             return new WP_Error(
    156                 'rest_invalid_param',
    157                 $message,
    158                 array( 'status' => 400 )
    159             );
    160         }
     148        $params = $request->get_params();
    161149
    162150        foreach ( $options as $name => $args ) {
  • trunk/tests/phpunit/tests/rest-api/rest-settings-controller.php

    r61178 r61324  
    386386
    387387    /**
    388      * Settings can't be created
     388     * @doesNotPerformAssertions
    389389     */
    390390    public function test_create_item() {
    391         wp_set_current_user( self::$administrator );
    392 
    393         $request = new WP_REST_Request( 'POST', '/wp/v2/settings' );
    394         $request->set_param( 'new_setting', 'New value' );
    395         $response = rest_get_server()->dispatch( $request );
    396 
    397         $this->assertSame( 400, $response->get_status() );
    398     }
    399 
    400     /**
    401      * @ticket 41604
    402      */
     391        // Controller does not implement create_item().
     392    }
     393
    403394    public function test_update_item() {
    404395        wp_set_current_user( self::$administrator );
    405 
    406396        $request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
    407397        $request->set_param( 'title', 'The new title!' );
     
    412402        $this->assertSame( 'The new title!', $data['title'] );
    413403        $this->assertSame( get_option( 'blogname' ), $data['title'] );
    414     }
    415 
    416     /**
    417      * @ticket 41604
    418      */
    419     public function test_update_item_with_global_parameters_present() {
    420         wp_set_current_user( self::$administrator );
    421 
    422         $request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
    423         $request->set_param( 'title', 'The new title!' );
    424         $request->set_url_params( array( '_locale' => 'user' ) );
    425         $response = rest_get_server()->dispatch( $request );
    426         $data     = $response->get_data();
    427 
    428         $this->assertSame( 200, $response->get_status() );
    429         $this->assertSame( 'The new title!', $data['title'] );
    430         $this->assertSame( get_option( 'blogname' ), $data['title'] );
    431     }
    432 
    433     /**
    434      * @ticket 41604
    435      */
    436     public function test_update_item_with_empty_body() {
    437         wp_set_current_user( self::$administrator );
    438 
    439         $request  = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
    440         $response = rest_get_server()->dispatch( $request );
    441         $data     = $response->get_data();
    442 
    443         $this->assertSame( 400, $response->get_status() );
    444     }
    445 
    446     /**
    447      * @ticket 41604
    448      */
    449     public function test_update_nonexistent_item() {
    450         wp_set_current_user( self::$administrator );
    451 
    452         $request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
    453         $request->set_param( 'i_do_no_exist', 'New value' );
    454         $response = rest_get_server()->dispatch( $request );
    455 
    456         $this->assertSame( 400, $response->get_status() );
    457     }
    458 
    459     /**
    460      * @ticket 41604
    461      */
    462     public function test_update_partially_valid_items() {
    463         wp_set_current_user( self::$administrator );
    464 
    465         $request = new WP_REST_Request( 'PUT', '/wp/v2/settings' );
    466         $request->set_param( 'title', 'The new title!' );
    467         $request->set_param( 'i_do_no_exist', 'New value' );
    468         $response = rest_get_server()->dispatch( $request );
    469 
    470         $this->assertSame( 400, $response->get_status() );
    471404    }
    472405
Note: See TracChangeset for help on using the changeset viewer.