WordPress.org

Make WordPress Core

Ticket #38553: 38553.diff

File 38553.diff, 3.3 KB (added by pento, 5 years ago)
  • src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

     
    12041204                                continue;
    12051205                        }
    12061206
    1207                         $terms  = array_map( 'absint', $request[ $base ] );
    1208                         $result = wp_set_object_terms( $post_id, $terms, $taxonomy->name );
     1207                        $result = wp_set_object_terms( $post_id, $request[ $base ], $taxonomy->name );
    12091208
    12101209                        if ( is_wp_error( $result ) ) {
    12111210                                return $result;
     
    19731972                                'items'       => array(
    19741973                                        'type'    => 'integer',
    19751974                                ),
     1975                                'arg_options' => array(
     1976                                        'sanitize_callback' => 'wp_parse_id_list',
     1977                                ),
    19761978                                'context'     => array( 'view', 'edit' ),
    19771979                        );
    19781980                        $schema['properties'][ $base . '_exclude' ] = array(
    19791981                                'description' => sprintf( __( 'The terms in the %s taxonomy that should not be assigned to the object.' ), $taxonomy->name ),
    19801982                                'type'        => 'array',
     1983                                'items'       => array(
     1984                                        'type'    => 'integer',
     1985                                ),
     1986                                'arg_options' => array(
     1987                                        'sanitize_callback' => 'wp_parse_id_list',
     1988                                ),
    19811989                                'context'     => array( 'view', 'edit' ),
    19821990                        );
    19831991                }
  • tests/phpunit/tests/rest-api/rest-posts-controller.php

     
    199199                $data = $response->get_data();
    200200                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
    201201                $this->assertTrue( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
     202
    202203                $request->set_param( 'exclude', array( $id2 ) );
    203204                $response = $this->server->dispatch( $request );
    204205                $data = $response->get_data();
    205206                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
    206207                $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
     208
     209                $request->set_param( 'exclude', "$id2" );
     210                $response = $this->server->dispatch( $request );
     211                $data = $response->get_data();
     212                $this->assertTrue( in_array( $id1, wp_list_pluck( $data, 'id' ), true ) );
     213                $this->assertFalse( in_array( $id2, wp_list_pluck( $data, 'id' ), true ) );
    207214        }
    208215
    209216        public function test_get_items_search_query() {
     
    13041311                $this->assertEquals( array( $category['term_id'] ), $data['categories'] );
    13051312        }
    13061313
     1314        public function test_create_post_with_categories_as_csv() {
     1315                wp_set_current_user( self::$editor_id );
     1316                $category = wp_insert_term( 'Chicken', 'category' );
     1317                $category2 = wp_insert_term( 'Ribs', 'category' );
     1318                $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );
     1319                $params = $this->set_post_data( array(
     1320                        'categories' => $category['term_id'] . ',' . $category2['term_id'],
     1321                ) );
     1322                $request->set_body_params( $params );
     1323                $response = $this->server->dispatch( $request );
     1324
     1325                $data = $response->get_data();
     1326                $this->assertEquals( array( $category['term_id'], $category2['term_id'] ), $data['categories'] );
     1327        }
     1328
    13071329        public function test_create_post_with_invalid_categories() {
    13081330                wp_set_current_user( self::$editor_id );
    13091331                $request = new WP_REST_Request( 'POST', '/wp/v2/posts' );