WordPress.org

Make WordPress Core

Changeset 39352


Ignore:
Timestamp:
11/23/16 23:12:05 (11 months ago)
Author:
joehoyle
Message:

REST API: Allow unsetting a post’s password.

Props danielbachhuber, iseulde.
Fixes #38919.

Location:
trunk
Files:
2 edited

Legend:

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

    r39349 r39352  
    974974 
    975975        // Post password. 
    976         if ( ! empty( $schema['properties']['password'] ) && isset( $request['password'] ) && '' !== $request['password'] ) { 
     976        if ( ! empty( $schema['properties']['password'] ) && isset( $request['password'] ) ) { 
    977977            $prepared_post->post_password = $request['password']; 
    978978 
    979             if ( ! empty( $schema['properties']['sticky'] ) && ! empty( $request['sticky'] ) ) { 
    980                 return new WP_Error( 'rest_invalid_field', __( 'A post can not be sticky and have a password.' ), array( 'status' => 400 ) ); 
    981             } 
    982  
    983             if ( ! empty( $prepared_post->ID ) && is_sticky( $prepared_post->ID ) ) { 
    984                 return new WP_Error( 'rest_invalid_field', __( 'A sticky post can not be password protected.' ), array( 'status' => 400 ) ); 
     979            if ( '' !== $request['password'] ) { 
     980                if ( ! empty( $schema['properties']['sticky'] ) && ! empty( $request['sticky'] ) ) { 
     981                    return new WP_Error( 'rest_invalid_field', __( 'A post can not be sticky and have a password.' ), array( 'status' => 400 ) ); 
     982                } 
     983 
     984                if ( ! empty( $prepared_post->ID ) && is_sticky( $prepared_post->ID ) ) { 
     985                    return new WP_Error( 'rest_invalid_field', __( 'A sticky post can not be password protected.' ), array( 'status' => 400 ) ); 
     986                } 
    985987            } 
    986988        } 
  • trunk/tests/phpunit/tests/rest-api/rest-posts-controller.php

    r39343 r39352  
    19481948        $new_data = $response->get_data(); 
    19491949        $this->assertEquals( '', $new_data['content']['raw'] ); 
     1950    } 
     1951 
     1952    public function test_update_post_with_empty_password() { 
     1953        wp_set_current_user( self::$editor_id ); 
     1954        wp_update_post( array( 
     1955            'ID'            => self::$post_id, 
     1956            'post_password' => 'foo', 
     1957        ) ); 
     1958 
     1959        $request = new WP_REST_Request( 'PUT', sprintf( '/wp/v2/posts/%d', self::$post_id ) ); 
     1960        $params = $this->set_post_data( array( 
     1961            'password' => '', 
     1962        ) ); 
     1963        $request->set_body_params( $params ); 
     1964        $response = $this->server->dispatch( $request ); 
     1965        $data = $response->get_data(); 
     1966        $this->assertEquals( '', $data['password'] ); 
    19501967    } 
    19511968 
Note: See TracChangeset for help on using the changeset viewer.